iOS дайджест #24: что нового в Swift 4.1 и 5.0, дизайн как в Sketch, используем SPM для iOS проектов
В выпуске: новые правила в App Store, скругление в iPhone X, хаки для IB, тестируем асинхронный код.
Статьи
Display More Screenshots on Your Product Page
Теперь можно размещать до 10 скриншотов приложения в App Store.
App Review rejecting apps that use Apple emoji for user interface icons
Apple теперь не разрешает использовать эмодзи в элементах интерфейса (см. пункт 5.2.5).
Masked And Animated Corners
Пока все ждут, когда Apple сделает публичный API для «правильного» скругления, они добавляют анимации для изменения радиуса и маски для углов. Ну что ж, подождем еще пару лет.
No Cutting Corners on the iPhone X
И сразу в продолжение про правильное скругление — почему оно такое и как сделано.
Why Your App Looks Better in Sketch
Замечали, что вроде делаешь дизайн по макету, а он все равно отличается? Разбираемся, почему так происходит и как исправить некоторые моменты. А если хотите уж совсем pixel perfect design, тогда есть отличный тул для сравнения дизайна прямо в симуляторе.
Top-down iOS error architecture
Многие архитектуры описывают идеальные случаи, но не так часто говорят о том, как прокидывать ошибки. В статье описано, как прокидывать ошибки с самого верхнего слоя вниз.
Unit testing asynchronous Swift code
У тех, кто только начинает писать юнит-тесты, часто возникает вопрос — как же протестировать асинхронный код. В статье описано несколько решений для этого.
Vapor 3 Release Schedule
Vapor планирует мажорный апдейт. Бета доступна уже сейчас, а релиз планируется на середину марта, как раз к выходу Swift 4.1. Что нового в релизе можно почитать тут.
The Builder Pattern
Ничего необычного, просто синтаксический сахар для создания объекта. По сути то же самое, что создать замыкание и сразу его выполнить, только немного эстетичней.
Code Size Optimization Mode in Swift 4.1
В Swift 4.1 можно будет выбрать — оптимизировать код скорости выполнения или размеру бинарника.
Dependency Management for iOS projects with the Swift package manager
Swift package manager официально не поддерживает iOS проекты, но выход есть.
Spectre and Meltdown fixes influence on iOS apps build time
Как исправление уязвимостей Spectre и Meltdown повлияло на скорость компиляции Swift проектов? В среднем время увеличилось на 4%.
Circular References Between Swift and Objective-C
Интересный кейс с циклическими зависимостями код на Swift и Objective-C.
Turning Swift compile-time safety into safety for your users
Необычный подход организации деструктивных операция с предупреждениями в код. Таким образом вы не забудете показать алерт, когда это необходимо.
Hole Driven Development in Swift
Часто бывает — написал сигнатуру функции, которая что-то возвращает и Xcode ругается, что ты еще ничего не вернул. Можно просто использовать fatalError, который возвращает Never.
iOS Ref
Подборка полезной инфы, которую непросто запомнить. Например, какой в iOS используется какой шрифт, распределение iOS по устройствам, какое разрешение и тому подобное.
How to use Dynamic Member Lookup in Swift
В Swift 5 добавится динамизм в рантейме. Детали можно прочитать по ссылке или в proposal на гитхабе.
Mac Privacy: Sandboxed Mac apps can record your screen at any time without you knowing
Любое приложение на маке может захватывать экран без запроса доступа. Потом распознаем что там на экране и тихо отправляем куда надо.
Apple HIG pre-release, 1985
Выдержка из HIG за 1985 год. Актуально до сих пор.
More Interface Builder Tips And Tricks
Дельные советы для работы с IB. Я, например, не знал № 9, и меня это всегда бесило.
Tools & Libs
Fix for the missing network activity indicator on iPhone X
Apple почему-то решили не добавлять активити индикатор для iPhone Х, но можно использовать сторонний компонент для этого.
Promises
Google представил свою реализацию Promises. Судя по их бенчмаркам, они работают быстрее, чем все конкуренты и сама библиотека занимает меньше места.
Fastlane CI
Fastlane занимается развитием своего self-hosted CI. Проект еще не готов к использованию, но за прогрессом можно следить тут.
Transformer
Создание NSAttributedString еще не было таким простым. Вбиваем строку, форматируем ее, как в обычном редакторе, и получаем код на Swift или Objective-C.
← Предыдущий выпуск: iOS дайджест #23