iOS Broadcast
3.31K subscribers
1.7K photos
84 videos
973 links
Подборка новостей и статей для iOS разработчиков.

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
Как не потерять голову (и память) при поиске утечек в iOS (6 мин)

Способы обнаружения утечек из статьи:
👉 С помощью Xcode Memory Graph
👉 С помощью Instruments. После запуска приложения вы можете увидеть в реальном времени, сколько ресурсов потребляется в строке Allocations, и были ли обнаружены какие-либо утечки памяти в строке Leaks
👉 С помощью инструмента «Анализ» (только для Objective-C)
👉 С помощью unit-тестов
👉 С помощью Symbolic breakpoint. Вы можете создать точку останова, чтобы отследить вызовы метода dealloc, и проверить, был ли освобожден контроллер из памяти

#memory
👍2👎1
Освоение диаграмм в SwiftUI. Доступность (3 мин)

Swift Charts понимает ваши данные и автоматически создает дерево доступности для вашей диаграммы. Вам не потребуется выполнять никаких специальных действий, чтобы сделать вашу диаграмму доступной при использовании фреймворка Swift Charts.

#swiftui #accessibility
👍3👎1
Apple’s Worldwide Developers Conference returns June 5, 2023

WWDC в этом году пройдет с 5 по 9 июня.
Будут представлены новинки iOS, iPadOS, macOS, watchOS и tvOS. Также будут представлены новые технологии и инструменты для разработчиков.
Наряду с объявлениями, сделанными в ходе основного доклада и презентаций State of the Union 5 июня, онлайн-программа этого года будет включать сессии, индивидуальные лабораторные занятия и возможности для общения с инженерами Apple и другими разработчиками.
До 19 апреля можно поучаствовать в Swift Student Challenge.

#apple #wwdc
🔥3👎1
Посмотрите на свою белую спину, а потом вот на эти видео 😎
📺 iOS 17 - Release Date Confirmed, New Leaks & WWDC 2023! (10 мин)
📺 iOS 16.4 - 50+ Changes and Features! (19 мин)
📺 Новости мобильной разработки 2023.9 (37 мин)
📺 Менторство в IT — Как это работает #2 (49 мин)

#подборкавидео
😁6👎1
Болевые точки Dart и Flutter (24 мин)

Глобально все «раздражение» автор разделил на 3 основные части:
👉 проблемный дизайн Dart как современного ЯП;
👉 средства разработки (IDE и tooling), которые иногда не только не помогают, но и немножечко вредят;
👉 ограничения Flutter, которых могло и не быть.
а также он выделил...
👉 не нативные UI виджеты;
👉 уровень производительности (особенно в вебе);
👉 отсутствие динамического обновления с бека;
👉 state management ecosystem is a mess;
👉 нет возможности подгружать динамические библиотеки в run-time;
👉 нет официальной поддержки аудио (только ограниченные сторонние пакеты);

Пробовали ли вы flutter? Как вам? 🙋

#crossplatform
🤯5
В чем отличия #available и @available?
Anonymous Quiz
39%
#available для потребителей API, @available для создателей API
25%
#available для создателей API, @available для потребителей API
20%
Нужно использовать @available, #available устарело
16%
Нет разницы, дело вкуса
👎2👍1
Understanding protocol associated types and their constraints

Associated type добавляется в протокол и позволяет не специфицировать конкретный тип данных, а ограничить его лишь соответствием протоколу. Интересные кейсы читайте в статье

#swift
👍2
The relationship between UIView and CALayer (1 мин)

Об отношениях UIView и CALayer:
👉 UIView наследуется от UIResponder, это базовый юнит иерархии view и контейнер для CALayer
👉 CALayer - sublayer UIView, который обрабатывает отрисовку и анимации содержимого view
👉 UIView контроллирует графику, анимации и верстку с помощью CALayer. Например, свойства frame, bounds и center UIView задаются соответствующими свойствами CALayer
👉 CALayer предоставляет множество свойств и функций, которых нет у UIView. Например, shadow, corner radius, border, gradient

#ui
👍6👎1
Вышел Swift 5.8 (2 мин)

Обновление включает в себя функции и возможности, которые получат официальную поддержку в Swift 6, но разработчики уже могут использовать их, передав компилятору флаг -enable-upcoming-feature, а затем указав идентификаторы самих функций.
Также обновлена официальная документация в новом формате, менеджер пакетов Swift и SwiftSyntax.
Apple продолжает внедрять поддержку своего языка программирования на машинах под управлением Windows.
Бинарные файлы Swift 5.8 для Xcode, Windows и Linux доступны для скачивания на официальном сайте. Также Swift 5.8 поставляется вместе с Xcode 14.3, который компания выпустила на этой неделе.

#swift
🔥5👎2
Test Plans — теперь по умолчанию для новых проектов с Xcode 14.3 (2 мин)

В Xcode 14.3 для новых проектов по умолчанию используется Test Plan. Данный план тестирования по умолчанию в редакторе Test Plan помечен как Autocreated (создан автоматически), он может быть просмотрен и изменен, как и обычный. Для нового проекта, если вы откроете схему по умолчанию, план тестирования будет указан в разделе Test, а кнопка преобразования не появится

#testing
👎1🤩1
5 reasons I still feel SwiftUI is premature (5 мин)

Многие в восторге от SwiftUI 😎
А вот автор статьи считает его сырым:
👉 Все еще невозможно использовать без UIKit. Например, navbar, tab bar, TextEditor
👉 Ограниченный scroll view. Невозможно использовать contentOffset и velocity
👉 Целевой экран Navigation link предзагружен. Нужны костыли, чтобы сделать ленивую загрузку view
👉 ForEach ограничен невозможностью использовать index
👉 Многие SDK не поддерживают SwiftUI

#swiftUI
👎7👍4
Переходим на Flutter: за и против (8 мин)

Резюмируя:
👉 Виджеты Flutter позволяют быстро и гибко реализовывать сложные пользовательские представления, а сам Dart легче освоить, чем Kotlin, Swift или Java
👉 Flutter имеет активное сообщество разработчиков, различные пакеты, а также программы для повышения качества этих пакетов. Инструментарий старается идти в ногу со временем
👉 Реальная производительность может отличаться от платформы к платформе, поэтому необходимо определиться с целевым предназначением
👉 Пользовательское взаимодействие на некоторых платформах может отличаться от нативного

#crossplatform
👎12👍6
[iOS] Make your app suitable for UI auto-testing (10 мин)

Можно добавить в свое приложение бекдоры, скрытые от пользователя, такие как изменения API URL, работу с фича тогглами, пропуски онбордингов и т.д. Это поможет сделать тестирование более атомарным, уменьшить время прогона, улучшить стабильность и поработать с тестовым покрытием.
В статье приведены инструменты и примеры их работы для контроля и работы с UI тестами:
👉 launchArguments and launchEnvironment
👉 SBTUITestTunnel
👉 mac host — test app tunnel

#testing
👍2👎1
Как компании подготовиться к модуляризации iOS приложений (9 мин)

👉 Модуляризация — отличный подход, который помогает упростить разработку приложений, их поддержку и развитие, но этот процесс требует много времени и зависит от многих факторов
👉 Предпосылок к модуляризации приложений много — от сложностей в работе с большой системой до необходимости повышения качества разработки. Понять, нужна ли в вашем проекте модуляризация приложения, поможет список вопросов-маркеров
👉 Перед модуляризацией приложения желательно подготовиться. Например, построить пайплайны, внедрить кодогенерацию
👉 Перед разработкой желательно все спроектировать «на бумаге» — это поможет избежать большого количества проблем

#модуляризация
👍2👎1
DivKit. Server Driven UI. Ольга Ким. Яндекс — Как это работает #3 (46 мин)

Обсуждаем вёрстку UI мобильных приложения на сервере без необходимости обновления приложений — Server Driven UI. Всё это на примере Open Source движка от Яндекс DivKit.
Гость выпуска — Ольга Ким, CTO DivKit в Яндекс.

#какэтоработает
🔥8👎71👍1
Swift async/await. Чем он лучше GCD? (12 мин)

Swift async/await - это новая фича языка, добавленная в swift 5.5. Она позволяет работать с асинхронными функциями в синхронном стиле. Разберем проблемы при работе с многопоточностью до async/await:
👉 Pyramid of doom - вложенность замыканий. Возникает сложность визуального восприятия
👉 Неудобная обработка ошибок
👉 Ошибки с замыканиями не выявляются компилятором
👉 Thread explosion. Если помещать в очереди много потокоблокирующих задач (которые используют локи, sync или sleep), то GCD не хватит потоков из его пулла, и он начнет создавать новые
👉 Priority inversion - в некоторых случаях задача с более высоким приоритетом может ожидать задачу с более низким приоритетом

#concurrency
👍91👎1
Firebase is Overrated. 5 Alternatives that are currently killing it

Firebase имеет достойные альтернативы:
👉 Supabase
👉 Amplify
👉 Apprite
👉 NHost
👉 MongoDB Realm

Подробнее о плюсах и минусах каждого в статье

#tools
👎5👍4
Шаблон Цепочка обязанностей и его реализация на Swift

Паттерн Цепочка обязанностей — это поведенческий паттерн проектирования, который позволяет обрабатывать запросы путем формирования цепочки объектов обработки. Каждый объект обработки содержит ссылку на следующий объект в цепочке. Согласно этому шаблону, при получении запроса каждый объект в цепочке либо обрабатывает запрос, либо передает его следующему объекту в цепочке. К основным преимуществам этого шаблона относятся:
👉 Разделение отправителя и получателя запроса
👉 Динамическое добавление или изменение порядка обработки в цепочке
👉 Повышение модульности и поддерживаемости кода
Пример на Swift ищите в статье

#паттерны
👍4