iOS дайджест #37: MVVM + SwiftUI, опыт использования Catalyst
В выпуске: секьюрити ревью приложений в AppStore, SwiftUI под капотом, CLI для iOS-приложений и много крутых библиотек.
Статьи
iOS Performance tips you probably didn’t know (from an ex-Apple engineer)
Советы по производительности на iOS. Про UILabel было неожиданно.
Capture Lists
Статья от старожила iOS-разработки о переменных, захватываемых блоками.
SwiftUI defaults considered harmful
Про особенности реализации SwiftUI. Например, вы не можете положить больше 10 views в коллекцию.
Modern MVVM iOS App Architecture with Combine and SwiftUI
Туториал по MVVM на SwiftUI. Такой себе Redux вышел.
Mastering buttons in SwiftUI
Наконец-то работа с кнопками с помощью SwiftUI стала проще. Особенно по сравнению с NSButton.
TextField in SwiftUI
И еще про нюансы с TextField.
How to Swizzle All of UIKit
Почему бы не взять и не засвизлить все методы UIKit.
Xcode Build Settings
Список всех настроек Build Settings.
Writing command line interfaces for iOS apps
CLI на Swift можно использовать не только для утилит, но и для iOS-приложений с помощью MultipeerConnectivity framework. Например, тестить пуши или подставлять нужные данные.
How Collection Diffing works in Swift
Немного хардкора: как работает поиск дифов для коллекций.
Going Deep With Decodable
Люблю формат «проблема — решение». Именно в таком формате описаны 4 типичные проблемы и их решения при работе с Decodable.
Bringing Adaptivity to Mac Catalyst
Отличный гайд, как ребята переводили iOS-приложение под Mac с помощью Catalyst.
A security review of 1,300 AppStore applications
С одной стороны, это интересное ревью аспектов безопасности, а с другой — это все странно. Неужели так много приложений делают что-то для защиты.
Coordinator pattern in iOS 13 world
Паттерн «координатор» уже плотно проник в жизнь iOS-разработчиков, но вот с iOS 13 и SceneDelegate есть несколько нюансов.
Библиотеки
Timelane — дебагинг асинхронного кода через Instruments.
LocalizedSwift — локализация через Property Wrappers.
SecurePropertyStorage — и заодно — UserDefault и KeyChain через Property Wrappers.
zld — более быстрая альтернатива эпловому линкеру.
SourceKitForSafari — то, чего всегда не хватало — переходы и документация в GitHub.
AnyLint — качественная замена кастомных правил SwiftLint. Не радует только, что надо тянуть еще одну зависимость через Brew.
SPMReady — если хотите переехать с CocoaPods или Carthage на SPM, то это просто незаменимая библиотека, чтобы понять, поддерживают ли все зависимости SPM.
github.com/bitomule/SwiftyPods — описание Podspec на Swift.
Видео
← Предыдущий выпуск: iOS дайджест #36