iOS дайджест #27: React Native — ну сколько можно, 10 лет AppStore, новинки Swift 4.2
В выпуске: анализ CI сервисов, немного реверс инжинирим, упрощаем себе жизнь с помощью различных инструментов, любуемся Apple design award.
News
Swift Evolution
Судя по обновленному readme, Swift 5 стоит ждать уже в начале следующего года.
CarPlay iOS 12.0 Beta 1 to Beta 2 API Differences
В iOS 12 Beta 2 добавили много новых методов для CarPlay.
The App Store turns 10
App Store исполнилось 10 лет. Эти 10 лет многое изменили в плане бизнеса и потребления контента на мобильных устройствах.
10 years of the App Store: The design evolution of the earliest apps
И еще одна статья про десятилетние: как менялись приложения за эти 10 лет.
Apple Design Awards 2018
Победители Apple Design Awards 2018. Интересно наблюдать, как из года в год меняются тенденции дизайна.
When Swift was first announced at WWDC 14, the internal repo had 18,000 SVN revisions after four years of development. Four years later, and the open source Swift project has 18,000 PRs on Github! July 18, 2018
За 4 года в репозитории Swift уже 18000 Pull Requests.
initial checkin, nothing much to see here.
Хоть Swift объявили 4 года назад, ему уже исполнилось 8 лет на самом деле.
Articles
Swift for Android: Our Experience and Tools
React Native не нужен, или как Readdle решили сделать андроид приложение на Swift. Судя по примеру приложения, не очень похоже на чистый Swift. Стоит ли оно того? Думаю, узнаем из новых статей от ребят.
Benchmark of Swift extensions vs methods: Swift 4.1
О боже, о боже, наличие множества экстеншенов замедляет скорость компиляции. Но только эта разница становится значимой, если у вас тысячи методов.
Finally got around to updating this chart I first created several years ago. Turns out this was the longest time spent on macOS at a WWDC keynote in four years... iOS pretty consistently
50-60 minutes, watchOS 10-20m, tvOS has varied widely. Also v clear h/w is exception, not rule June 6, 2018
Интересная статистика — чему больше всего уделяют внимания на WWDC. Радует, что в этом году уделили больше времени macOS.
Enabling newly added opt-in features in Xcode 10
Если вы уже пользуетесь Xcode 10, то имеет смысл включить новые фичи.
Custom Intents with SiriKit on iOS 12
Уже подоспели первые туториал по SiriKit. Не забываем, что много из этого доступно в видео с WWDC.
Быстрые команды Siri
А если хотите на русском, то вот (не перевод).
Any[Object]
Тип AnyObject в Swift не такой простой как кажется. В конце статьи есть ряд правил, которые помогут предотвратить неочевидные баги.
The iOS Testing Manifesto
Это уже становится традицией — подробный гайд про тестирование.
Painless Core Data in Swift
Еще немного советов по работе с Core Data.
Continuous Integration Services for iPhone Apps in 2018
Обзор CI сервисов. В конце есть Editor’s Choice.
AvitoTech team playbook
Avito делятся, как у них устроена команда, процессы, а также рассказывают про историю, ценность компании.
iOS Developer Skills Matrix
Матрица Junior-Middle-Senior. Все, конечно, условно и зависит от компании, но все равно забавно посмотреть.
Или все-таки нужен React Native? Facebook работает над новой версией RN, в которой будет легче работать с нативными элементами. При этом старые приложения будет легко адаптировать. Ждем новостей ближе к концу года.
React Native at Airbnb
Цикл статей из 5 статей от Airbnb, где они рассказывают о своем двухлетнем опыте использования React Native. Если коротко, то поигрались и хватит. Но опыт интересный в любом случае.
The Case for React Native
А Эш рассказывает, как ему нравится RN. Решать вам, использовать или нет.
Airbnb and React Native Expectations
А потом решил прокомментировать статьи от Airbnb. Тоже интересное мнение.
React Native: A retrospective from the mobile-engineering team at Udacity
И еще одна компания попробовал RN и отказалась. Статья странноватая, но все же.
What we learned about CI/CD analysing 75k builds
Интересная статистика по поводу использования CI в мобильных проектах.
The Story Behind Susan Kare’s Iconic Design Work for Apple
История создания иконок для первых макинтошей.
iPad Navigation Bar and Toolbar Height Changes in iOS 12
Просто взяли, поменяли высоты навигейшен бара или таббара и никому не сказали. Молодцы Apple.
How to Use Slack and Not Go Crazy
Несколько советов, как работать со Slack, чтобы жизнь была немного проще.
A Year of Monument Valley 2
Monument Valley подвели итоги года. Там же доступны итоги прошлых лет. Интересно наблюдать, как вырос китайский рынок.
Reverse Engineering Instruments’ File Format
Почему бы не пореверс-инженерить формат файла инструментов в Xcode?
Code
What’s new in Swift 4.2
Xcode 10 c поддержкой Swift 4.2 выйдет осенью, а пока можно потыкать бету и посмотреть, какие фичи нас ждут.
Swift’s new calling convention
Новый calling conventions в Swift 4.2 должен улучшить производительность за счет сокращения вызовов retain, release. Ждем бенчмарки.
Icon for File with UIKit
Получаем картинки для разных типов файлов. В общем-то, это достаточно популярный подход в macOS, в CleanMyMac мы его тоже часто используем.
Writing self-documenting Swift code
Я всегда за то, чтобы использовать переменные или функции вместо комментариев, которые устаревают, теряются или еще что-то. На эту тему есть еще хорошая шутка. Джон рассказывает еще про несколько подходов, как сделать код самодокументируемым.
Making Swift tests easier to debug
Ни один дайджест не обходится без статей от Джона. Читаемость тестов не менее важна, чем читаемость самого кода, так как это пример того, как использовать код и они зачастую полезнее любой документации.
Swift Diagnostics: #warning and #error
Возможно, вы уже видели, что в Swift 4.2 добавили #warning и #error. Но как это реализовано под капотом?
Enumerating enum cases in Swift
Наконец-то можно получить все cases в enum и не хардкодить это каждый раз.
Swift Tip: Quick Performance Timing
Небольшой сниппет, как замерить скорость выполнения какой-либо операции.
Exploring @dynamicMemberLookup
Долгожданный динамизм добавили даже раньше времени — в Swift 4.2. Вспоминаем что это такое и еще полезный хак, как не выстрелить себе в ногу.
Finding Non-localized Strings
Всего один ключ поможет найти не локализованные строки в приложении.
@autoclosure what, why and when
Никогда не использовал и уже забыл, что такое есть в Swift. Кто-то его использует?
Tools & Libs
I created a proof of concept Xcode for iPad! Code is compiled on a Mac, which acts as a remote server. Generates an .ipa that is uploaded by the Mac, the iPad then installs it. June 16, 2018
Xcode для iPad, почему бы и нет.
MarzipanTool
Хотите попробовать запустить iOS приложение на macOS? Тогда этот репозиторий специально для вас.
xcprojectlint
Был линтер для IB, должен быть и линтер для файлов проекта.
iOSLocalizationEditor
Довольно удобное приложение для редактирования файлов локализации.
Extensible mobile app debugger
Facebook выпустил платформу для дебага мобильных приложений с десктопным приложением и плюшками. Кто уже успел попробовать?
Sift app
Приложение, которое показывает запросы в сеть от всех приложений. В AppStore такое не пустят, так что можно только сбилдить тебе на устройство.
Check if UIImage exists in assets in compile time
Если вы не пользуетесь SwiftGen, R.swift или другим подобным решением, либо все еще пишите на Objective-C, то это может стать полезной находкой. Скрипт проверяет наличие используемых картинок в проекте.
NonEmpty
Библиотека, которая гарантирует на этапе компиляции, что коллекция будет непустая