iOS дайджест #28: как стать iOS разработчиком, монады, отзывчивый интерфейс и accessibility
В выпуске: учимся репортить баги в Apple, ускоряем сборку проекта и почему каждая строчка кода на самом деле имеет документацию.
Статьи
Building Fluid Interfaces
Fluid интерфейс значит «быстрый», «плавный», «естественный». Когда смотришь на такой интерфейс, сразу думаешь: «А разве можно как-то иначе? Это же так естественно». Лонгрид о том, как добиться такого интерфейса.
Why Monads?
Функторы, монады, сколько уже было сказано по этому поводу. Еще один лонгрид о том как написать, использовать монады и вот это все.
Make your app accessible for everyone
Читаем и добавляем поддержку accessibility. Да, прямо сейчас.
Bug Reporting
Очередной исчерпывающий туториал, как отправить баг(радар) в Apple.
The PLAY button is not optical alignment
Замечали, что в кнопке «Play» иконка расположена не совсем по центру, точнее, смотря что считать центром. Разбираемся, что такое оптический и физический центр.
Why learn algorithms?
Нужно ли iOS разработчику знать алгоритмы? В статье приводится ряд задач, в которых это необходимо, но так ли часто мы сталкиваемся с такими задачами?
A Complete Guide to Getting Hired as an iOS Developer in 2018
Найти работу iOS разработчиком еще не было так просто, говорили они.
Refactoring Massive App Delegate
Про App Delegate есть много шуток. И это действительно так, зачастую он разрастается и делает сотни вещей. В статье аж три способа, которые помогают этого избежать. Мой фаворит — № 2.
Extracting the location from a photo
Еще раз подумайте, стоит ли всем подряд давать доступы на ваши данные. Например, из фотографий можно вытянуть информацию, где вы были.
Let’s Talk Architecture
Скучали по архитектурам? В принципе ничего прям нового, просто обзор, с чего все начиналось, и дальнейшее развитие архитектур под iOS.
Improving Your Build Time in Xcode 10
В Xcode 10 можно неплохо ускорить скорость сборки проекта за счет параллельного билда, но важно, чтобы проект был разбит на сабмодули, иначе большого прироста не будет.
NSDataAsset
В ассетах можно хранить не только цвета и картинки, но и данные.
How drawing works in an Xcode playground
Не так полезно с точки зрения практики, как просто ради интереса, как устроена отрисовка вьюх в Xcode Playground.
Xcode 10 Storyboard Changes
В Xcode 10 достаточно изменился режим редактирования storyboard, поэтому если не пользуетесь бетами, то лучше прочитать, чтобы быть в курсе изменений.
What I Learned Making 5 ARKit Prototypes
Занимательные примеры использования ARKit, но не все практичные и удобные.
Swift
Plan for module stability
Swift 5 обещает наконец-то привнести бинарную совместимость и уже даже готов примерный план.
Atomic Properties in Swift
В Swift нет встроенных атомарных переменных, поэтому вспоминаем основы и добавляем все вручную.
Apple’s use of Swift in iOS 12
Apple потихоньку начинает внедрять Swift в свои приложения. Пока не так много, конечно.
Structuring Swift code
Вопрос организации проекта и кода всегда меня очень интересовал. Хранить тесты отдельно или рядом с кодом? Куда класть xib, storyboard, assets?
Open Source Code Obfuscation Tool for Protecting iOS Apps
С обфускацией на Objective-c не было больших проблем, но как быть со Swift?
Refactoring in Swift: Closure Callbacks
Немного старая тема с тем, как присвоить функцию и чтобы она делала retain cycle.
TODO FIXME And Compiler Directives
В Swift 4.2 добавили директивы для обозначения ворнингов и ошибок, которые подсвечиваются в Xcode.
Private properties in protocols
Весьма странный заголовок, как и само решение. По сути, просто заворачивание общей логики в отдельный объект.
Early returning functions in Swift
Примеры того, как сделать код читабельнее с помощью раннего возврата из функции. Главное не злоупотреблять.
Subclass-free view controllers in Swift
Можете представить iOS приложение без единого сабкласса UIViewController? Не очень удобно, конечно, но такое возможно.
CompactMap vs flatMap: The differences explained
Многие уже видели ворнинг в Xcode насчет compactMap. Если не совсем понятно, в чем разница, или остались какие-то вопросы — можно прочитать краткую выдержку.
Код
Every line of code is always documented
Лучший код — ненаписанный код, его не надо тестировать, он не выйдет из строя. Но раз уж так вышло, что код написан, то Git может стать дополнительной документацией этого кода.
UIGestureRecognizer: теория, практика, кастомизация
Если хотите детально разобраться, как работают жесты и тачи в общем, то эта статья именно для вас.
What’s in your Larder: iOS layout DSLs
А какой ваш любимый DSL для лейаута?
simctl: Control iOS Simulators from Command Line
Удобная утилита, чтобы работать с iOS симуляторами. Лично я люблю очищать все симуляторы за раз.
Command-click on code options and possibilities in Xcode
Первое, что я сделал в Xcode 10, — это вернул прежнее поведение по ⌘+Click в коде.
Increasing the tap area of a UIButton
Повсеместная проблема начинающих разработчиков, которые делают кнопки очень маленькими и на них невозможно нажать на устройстве. Благо, для этого есть несложный фикс.
How Apps Adapt to the Series 4 Apple Watch Screen Sizes
Apple Watch Series 4 уже в продаже, так что пора обновить приложения.
Why #if DEBUG Conditional Should Be Avoided in Library Code
Сам недавно наткнулся на такую проблему. Будьте осторожны.
Библиотеки
PermissionsKit
Мы тут выпустили библиотеку для macOS для работы с правами доступа к системным штукам. Особенно актуально для Mojave и Full Disk Access правам.
Swift GYB
Пользовались Sourcery? Так вот, похожая тулза используется в самом Swift.
SourceEditor
Хочется покодить в отпуске, а ноутбука нет под рукой? Тогда можно покодить в телефоне. Скомпилировать не получится, но хоть что-то.
Validated
Pointfree продолжают выкладывать свои наработки. На этот раз библиотека для валидации данных.
Examples of NSPredicate usage
Похоже, в помощь к fuckingblocksyntax присоединяется такой же ресурс, но для предикатов.
Log In Kickstarting new official Docker support for Swift
Доступен официальный Docker контейнер со Swift.
DataSourceKit
Надоело клепать формочки вручную? Или хочешь попробовать новую библиотеку? Тогда вот — DataSourceKit.
fastlane.ci
fastlane.ci закрылся так и не увидев свет.
Фан
This Outlook tab animation!June 16, 2018
When a subway station is a better programmer than you are...June 16, 2018
The most surprising thing I’ve learned about iOS users from pod.io usage:
Fully 40% of people use a non-default font size.
Of those, half are using a *smaller* font size than the default.June 16, 2018
It may be old old news, but I was delighted when I discovered that Siri does this.June 16, 2018
Apple now requiring more detailed app update notes.June 16, 2018
> did you know you’re connected to the production database?June 16, 2018
Видео
NSSpain
Конференция NSSpain прошла совсем недавно, а ребята уже выложили видео.
CocoaHeads
Также доступны доступны видео с последнего CocoaHeadsMSK.
Swift & Fika 2018
И еще с одной конференции, которая проходила в Швеции.
← Предыдущий выпуск: iOS дайджест #27