iOS Good Reads – swift, разработка мобильных приложений, архитектура, блокчейн, VR, AR, карьера, IT
12.4K subscribers
654 photos
64 videos
3.95K links
Самые интересные статьи, видео и новости, связанные с iOS разработкой. Не больше трёх материалов в день.

Лучшее iOS сообщество в Телеге: @iosgt

Размещение рекламы: @tanyasanovna
Download Telegram
Allow implicit self for weak self captures, after self is unwrapped

Language Workgroup приняла пропозал, согласно которому можно больше не писать self в замыканиях с weak self после того, как self развернули. Изменения реализуют в одной из следующих версий Swift.

Вот как будет выглядеть код:
button.tapHandler = { [weak self] in
guard let self = self else { return }
dismiss()
}
Типовые архитектурные паттерны переоценены

- В реальной жизни дизайн многих систем разрабатывается не так, как в книгах. Их не разрабатывают выделенные архитекторы, не документируют сложными стандартами вроде С4, не используют UML, и не пытаются привести к словарю стандартных архитектурных паттернов банды четырех
- Задача инженера – выработать максимально простую архитектуру, которая поможет решить текущую бизнес-проблему. Соответствие стандартным подходам часто влечет за собой излишнюю сложность
- Главная роль паттернов – в повышении вашей насмотренности
- Чтобы прокачаться в system design, прорабатывайте архитектуру сложных кейсов самостоятельно, запрашивайте фидбэк у коллег, сравнивайте разные варианты дизайна друг с другом, проводите ревью у других людей
Краткое содержание цикла статей про огромный рефакторинг Slack

- Slack выпустили три статьи: про стабилизацию, модуляризацию и модернизацию кодовой базы
- Основные причины: сложности в масштабировании разработки и желание переехать на новый техстек
- Была разработана понятная стратегия рефакторинга, разбитая на конкретные шаги
- Куча интересных деталей про принятие решений по архитектуре, тулингу, зависимостям
Реализация простого watchdog’а

- Если вы видите в крешлогах код 0x8badf00d – это значит, что приложение прибил системный watchdog, который следит за зависшими приложениями
- Обычно очень сложно понять, а что именно в приложении вызвало зависание
- Помочь отловить причины таких ситуаций может простой самописный watchdog, код которого можно посмотреть здесь
Шаринг кода на Swift между клиентом и сервером

Шарить код можно не только на Kotlin, но и на Swift. В статье разбирается, как настроить сервер на Vapor, вынести часть бизнес-логики в общий Swift package и переиспользовать ее в приложении.
Автокомплит для команд Swift Package Manager

Если вы часто работаете с консолью и любите вкладываться в свою продуктивность, то попробуйте настроить автодополнение для SPM. В комплекте с ним идет утилита tooling, которая умеет генерировать shell completion scripts.
This media is not supported in your browser
VIEW IN TELEGRAM
Перенос Papers, Please на мобальные устройства

Очень интересная статья про то, как автор известной десктопной инди-игры пошагово адаптировал интерфейс и геймплей к маленьким экранам и тач-скрину.
Слухи про iPhone 14

- Новая презентация Apple с показом iPhone 14 пока планируется 7 сентября
- Самое заметное – у Pro версии уберут челку и заменят ее на точку с камерой и сенсором FaceID
- Камера станет еще мегапиксельнее, а батарея чуть лучше
- В Apple Watch завезут датчик температуры тела
50 сниппетов с полезными анимациями из разных приложений

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

В репозитории содержится несколько десятков примеров таких анимаций из разных приложений. Для каждого из них объясняется контекст его применения и приводится реализация.
Как анимация и вибрация помогли Додо сделать кнопку полезнее

В прошлом посте я поделился паттернами анимаций, которые приносят пользу. Кейс Додо из этой статьи – отличный пример использования таких паттернов на практике.
Conditional Layouts в SwiftUI

- В новой версии SwiftUI появился протокол Layout, который реализуется всеми стандартными контейнерами
- В протоколе две функции: sizeThatFits, которая расчитывает финальный размер контейнера с учетом всех детей, и placeSubviews, которая лэйаутит все дочерние вьюшки
- Новый тип AnyLayout позволяет менять лэйаут внутри контейнера без полной перерисовки вьюшек и сбрасывания стейта
This media is not supported in your browser
VIEW IN TELEGRAM
Pow – анимированные переходы для SwiftUI

Вышла Beta версия библиотеки Pow, которая добавляет кучу классных transition’ов для ваших вьюх. Несколько примеров:

💨Blur – при добавлении View переходит из заблюренного в четкое состояние, при удалении – наоборот
⭕️Iris – растущий круг при добавлении, убывающий – при удалении
🪄Vanish – View рассыпается на мелкие кусочки
Команды Почты и Облака Mail.ru ищут iOS-разработчиков и запускают Weekend Offer

В команду Почты Mail.ru приглашают человека, который готов участвовать в продуктовой разработке по основным направлениям развития почты, поддерживать и улучшать технические и продуктовые SLA и метрики в основных продуктах.

В команду Облака Mail.ru приглашают iOS-разработчика, который разделит задачи по развитию продукта, будет участвовать в новых продуктовых запусках и A/B-тестах, принимать технические вызовы в работе с файлами и медиаконтентом, а также улучшать инфраструктуру и автоматизацию.

Успейте зарегистрироваться до 2 сентября!
Статистика использования SwiftUI, Catalyst и AppKit системными приложениями macOS

- В macOS Ventura 85% приложений используют AppKit, 12% – SwiftUI, 4% – Catalyst
- Доля SwiftUI растет с каждой версией. С Monterey она выросла в 2.5 раза
- Catalyst стагнирует уже пару лет
Интерактивные туториалы на DocC

DocC, инструмент для генерации документации от Apple, умеет не только генерировать API reference, но и очень крутые пошаговые интерактивные туториалы. Вот, что они позволяют делать:

📝Разбивать туториал на главы
📹Встраивать видео, картинки и загружаемые файлы
Показывать квизы с вопросами, которые проверяют полученные знания

А вот еще один пример того, как можно использовать эти туториалы.
Модификатор presentationDetents() в SwiftUI

Этот модификатор помогает установить, какого размера должен быть отображаемый Sheet. Что интересно – он работает и с Popover, для которого тоже можно кастомизировать размер.
AppBox – инструмент для распространения сборок через Dropbox

С помощью AppBox можно распространять все виды сборок – Development, Ad-Hoc и Enterprise. Сервис полностью бесплатный, простой в использовании, интегрируется с Fastlane.
Lighter – генератор Swift-врапперов для SQLite базы

Lighter берет схему SQLite базы и генерирует из нее набор соответствующих Swift структур. Дальше их можно использовать двумя способами – встроенным в Lighter API для работы с базой или, не затаскивая дополнительных зависимостей, создавать соединение с базой вручную. Интегрируется в проект с помощью SwiftPM Plugins.
Изменения в отображении ViewController’ов в iPadOS 16

Огромный анализ всех изменений в отображении, которые произошли с разными видами ViewController’ов. Посмотрите, насколько это коснется вас, и решите – надо ли адаптироваться или использовать предложенные воркэраунды.