Каким бы антипаттерном не был синглтон, но про него продолжают писать и спрашивать. Синглтоны вызывают проблемы, портят тестируемость и увеличивают связанность. Предпочтительнее явная передача зависимостей.
Проблемы синглтона:
@unchecked Sendable
для временного решения проблемУ вас есть синглтоны в продуктах? 👍👎
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Простая статья для начала недели про отрисовку символов на холсте. Холст - тип представления для рисования динамической графики в SwiftUI. Главная особенность - обработка рендеринга сложных фигур эффективнее, чем создание нескольких вьюх
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Простой пример использования паттерна адаптер в повседневной жизни-адаптация интерфейсов к Swift Concurrency. Шаблон помогает интегрировать сторонние API-интерфейсы или устаревший код без полной переделки.
Пример интеграции стороннего SDK:
async
Создание адаптера
Преимущества:
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Пока нахожусь в дороге, добавил себе несколько статей в самолет и эта единственная, которая меня зацепила, интересный взгляд на дизайн пользовательского опыта:
UX всегда был ориентирован на людей
Цифровой сдвиг
UX приобретает стратегический характер
UX против всего остального
Перспективы UX
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Несмотря на то что Swift Error избавился от приставки NS, под капотом часто оказывается старый "добрый" NSError. Если не понимать как с ним правильно работать, сообщения об ошибках будут отображаться не корректно. Почти в каждом проекте есть набор утилит для того чтобы решить эту проблему, в статье же рассматривается готовое опенсорсное решение
Причина проблемы: мост NSError
Официальное решение: LocalizedError
Альтернативное решение: Протокол Throwable
Throwable
, который устраняет проблемы LocalizedError
Не буду приводить тут выводы из статьи, она явно расхваливает конкретную библиотеку. Но посмотреть в исходники и модифицировать свои обработчики ошибок, может быть полезно.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
📱➡️ 🧱 Одна строка кода для окирпичивания iPhone
Очень интересный обзор уязвимости в iOS, стоимостью в 17,500$ которая окирпичивала iPhone. Внедрение эксплойта происходит через устаревший API уведомлений Darwin. Уведомления Darwin используются для обмена сообщениями между процессами в операционных системах Apple. Уязвимость позволяет любому процессу в системе регистрироваться для получения уведомлений из своей "песочницы". Очень советую почитать, интересна не сама уязвимость, а пример того как происходит воспроизведение и исправление уязвимости. Apple получила отчет об уязвимости и выпустила фикс, ограничивающий права на отправку конфиденциальных уведомлений Darwin.
➡️ 26 июня: Начальный репорт с демо приложением "окирпичивателем"
➡️ 27 сентября: Репорт взят в работу
➡️ 11 марта: Репорт отмечен как исправленный в iOS 18.3
Очень интересный обзор уязвимости в iOS, стоимостью в 17,500$ которая окирпичивала iPhone. Внедрение эксплойта происходит через устаревший API уведомлений Darwin. Уведомления Darwin используются для обмена сообщениями между процессами в операционных системах Apple. Уязвимость позволяет любому процессу в системе регистрироваться для получения уведомлений из своей "песочницы". Очень советую почитать, интересна не сама уязвимость, а пример того как происходит воспроизведение и исправление уязвимости. Apple получила отчет об уязвимости и выпустила фикс, ограничивающий права на отправку конфиденциальных уведомлений Darwin.
Please open Telegram to view this post
VIEW IN TELEGRAM
Rambo Codes
How a Single Line Of Code Could Brick Your iPhone | Rambo Codes
Gui Rambo writes about his coding and reverse engineering adventures.
Понимание работы SwiftUI, инвалидации View, процесса диффа вьюх очень важно, но не менее важно уметь это профайлить. Пример слева демонстрирует распространенные ошибки в SwiftUI:
Оптимизация View:
Волшебство EquatableView и транзакций:
Вывод
Лучше сразу делать с минимальной гигиеной (
Equatable
) и уже при появлении проблем профилировать бутылочные горлышки со знанием дела и мест пристального внимания.Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM