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

Новости Kotlin и мультиплатформы @kotlin_broadcast
Новости Android @android_broadcast
Реклама и прочее @android_broadcast_bot
Download Telegram
🐥 Правильная обработка ошибок Swift: борьба с наследием Objective-C
Несмотря на то что Swift Error избавился от приставки NS, под капотом часто оказывается старый "добрый" NSError. Если не понимать как с ним правильно работать, сообщения об ошибках будут отображаться не корректно. Почти в каждом проекте есть набор утилит для того чтобы решить эту проблему, в статье же рассматривается готовое опенсорсное решение

Причина проблемы: мост NSError
🔴Протокол Error в Swift связан с Objective-C NSError
🔴Swift создает NSError с доменом и кодом, игнорируя локализованное описание

Официальное решение: LocalizedError
🟢Протокол LocalizedError предоставляет локализованные сообщения. Но тут тоже есть проблемы: необязательные свойства, игнорирование других свойств, устаревший подход

Альтернативное решение: Протокол Throwable
🔵Опенсорсная библиотека ErrorKit предоставляет протокол Throwable, который устраняет проблемы LocalizedError
🔵ErrorKit включает встроенные типы ошибок для распространенных сценариев, например NetworkError, FileError, DatabaseError, ValidationError, PermissionError

Не буду приводить тут выводы из статьи, она явно расхваливает конкретную библиотеку. Но посмотреть в исходники и модифицировать свои обработчики ошибок, может быть полезно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
4🔥1
📱➡️🧱 Одна строка кода для окирпичивания iPhone
Очень интересный обзор уязвимости в iOS, стоимостью в 17,500$ которая окирпичивала iPhone. Внедрение эксплойта происходит через устаревший API уведомлений Darwin. Уведомления Darwin используются для обмена сообщениями между процессами в операционных системах Apple. Уязвимость позволяет любому процессу в системе регистрироваться для получения уведомлений из своей "песочницы". Очень советую почитать, интересна не сама уязвимость, а пример того как происходит воспроизведение и исправление уязвимости. Apple получила отчет об уязвимости и выпустила фикс, ограничивающий права на отправку конфиденциальных уведомлений Darwin.
➡️ 26 июня: Начальный репорт с демо приложением "окирпичивателем"
➡️ 27 сентября: Репорт взят в работу
➡️ 11 марта: Репорт отмечен как исправленный в iOS 18.3
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥4🤔21
🐥 Оптимизация отрисовки SwiftUI
Понимание работы SwiftUI, инвалидации View, процесса диффа вьюх очень важно, но не менее важно уметь это профайлить. Пример слева демонстрирует распространенные ошибки в SwiftUI:
➡️ Прокрутка списка с более 20 пунктами вызывает фризы
➡️ Профилируем проблемы с рендерингом
➡️ Обнаруживаем, что каждый элемент пересчитывается несколько раз при прокрутке

Оптимизация View:
➡️ Извлечение отдельных View для уменьшения повторных вычислений
➡️ Использование EquatableView для пропуска ненужных рендеров.

Волшебство EquatableView и транзакций:
🟢SwiftUI использует Equatable view для оптимизации обновлений не изменившихся элементов
🟢Управление транзакциями предотвращает ненужные повторные вычисления
🟢Оптимизация привела к уменьшению обновлений на 40% и плавной прокрутке

Вывод
Лучше сразу делать с минимальной гигиеной (Equatable) и уже при появлении проблем профилировать бутылочные горлышки со знанием дела и мест пристального внимания.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13👍21
Forwarded from Compose Broadcast
🔥⚙️ Compose iOS теперь Stable

Самый громкий и важный анонс в истории Compose Multiplatform с выходом версии 1.8.0

Что именно готово для продакшен применения
👉 Все основные фичи из Jetpack Compose работают на iOS
👉 Типобезопасная навигация с поддержкой deep link
👉 Гибкое управление ресурсами
👉 Поддержка iOS Accessibility API
👉 Ощущения от UI приложения как нативного (скрол, редактирование текста, drag-and-drop, адаптивный UI, навигация жестами и пр)
👉 Производительность UI на Compose близка к SwiftUI, но пока немного уступает

Новая эра мобильной разработки уже тут!

#compose #ios
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍12🤔9
🖥 Новая секция Develop in Swift туториалов, посвящена Machine learning
Apple обновили свой список туториалов по решению практических задач с использованием Swift.В ней можно найти пошаговые инструкции и готовые проекты по решению следующих задач:
🔵Естественный язык. Изучите возможности фреймворка Natural Language по анализу настроений текста.
🔵Распознавание текста на изображении. Пример использования связки Vision и Translation фреймворков для идентификации и перевода текста на изображении.
🔵Интеграция ML моделей в приложения
🔵Тренировка своих моделей
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥61
🐥 SE-0481: Weak let
Swift предоставляет слабые ссылки на объекты с помощью модификатора weak. Слабые ссылки становятся nil при уничтожении объекта. Текущее правило требует объявления слабых ссылок с ключевым словом var. Это вызывает проблемы с потокобезопасностью при использовании слабых ссылок в параллельных контекстах. Предложение позволяет объединить weak с Sendable.
Мотивация:
🔴Классы с слабыми сохраненными свойствами не могут быть Sendable
🔴Замыкания с явными слабыми захватами не могут быть Sendable
🔴Разрешение слабой ссылке быть неизменяемой (weak let) решит проблему

Ограничение на слабые ссылки:
🟣Слабые ссылки должны быть изменяемыми, чтобы соответствовать идее изменения при уничтожении объекта.
🟣Это ограничение вызывает проблемы с потокобезопасностью.

Обходное решение:
🟢Обертывание слабых ссылок в структуры позволяет обойти ограничение
🟢weak ссылки в структурах ведут себя иначе, чем в других типах
🟢weak теперь можно комбинировать с let

Статус:
13 мая завершается Active review, ждем перехода в
1️⃣2️⃣3️⃣4️⃣5️⃣

Как вам такая фича? 🔥/🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔13🔥41
🐥 SE-0479: Расширение key path
Этот пропоузал расширяет использование key path ссылками не только на свойства но и на методы. Например, методы экземпляра и типа, а также инициализаторы. Основные преимущества:
🟢Упрощение обработки объявлений элементов
🟢Расширение выразительных возможностей key path
🟢Улучшение типобезопасности API
Судя по статусу, "Active Review (April 22 ... May 5, 2025)", активное ревью закончилось, ждем перехода в 1️⃣2️⃣3️⃣4️⃣5️⃣

Как вам такая фича? 🔥/🤔
Please open Telegram to view this post
VIEW IN TELEGRAM
🤔4🔥31
🖥 Все еще актуально учиться программированию?
Отзывающаяся мне серия статей, посвященная обучения программированию в мире AI ассистентов. Особенно мне понравилась часть про "илюзию компетентности". Искусственный интеллект расширяет возможности программирования, а не заменяет его. Программирование развивает логическое мышление и навыки решения проблем.

Вычислительное мышление и его развитие
🔵Логическое мышление включает разбиение сложных проблем на более мелкие части и разработку пошаговых решений.
🔵Вводные курсы программирования развивают базовое логическое мышление.
🔵Для улучшения логическое мышления рекомендуется изучать алгоритмы и структуры данных.

Будущее карьеры программиста
🟣Разработчики будут проверять и отлаживать код, сгенерированный ИИ.
🟣ИИ сталкивается с проблемами в определении влияния изменений на кодовую базу и требует четких инструкций.
🟣Искусственный интеллект будет продолжать развиваться, но программисты будут играть ключевую роль в его использовании.
🟣Обучение программированию в мире ИИ требует адаптации.
🟣Важно сначала понять проблему и разработать стратегию решения, а затем переходить к реализации

Избегайте иллюзии компетентности
🔴Многие начинающие программисты уверены, что разгадали задачу с помощью ИИ, но пропускают главный урок.
🔴Важно научиться эффективно использовать ИИ и развивать навыки программирования.
🔴ИИ предоставляет готовые решения, что может привести к переоценке своих способностей.

Советы по избежанию иллюзии
🟢Расставляйте приоритеты и активно участвуйте в обучении
🟢Используйте методику отладки резиновой уточки для понимания кода
🟢Обучайте других, чтобы лучше понять материал
🟢Ищите обратную связь от коллег, просите код ревью
🟢Решайте задачи без использования ИИ, чтобы убедиться в собственных навыках и понимании

Очень интересно, проще ли научиться программировать было в мире без AI или в современном мире. Сможем ли мы достаточно быстро адаптироваться к быстро меняющемуся миру...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🔥2💯1