
Swift *
Открытый объектно-ориентированный язык
33 iOS библиотеки с открытым исходным кодом, которые будут популярны в 2017 году
Сегодня мы приготовили для вас полезный перевод поста основателя Ecler Studios Paweł Białecki, в котором он предлагает нашему вниманию 33 open source проекта для iOS разработчиков.
С помощью своего аккаунта в GitHub он открыл для себя множество перспективных инструментов и отобрал, по его мнению, лучшие из них для своих читателей.

Многопоточность (concurrency) в Swift 3. GCD и Dispatch Queues
Итак, у вас есть приложение, оно работает на
main thread (главном потоке), который отвечает за выполнение кода, отображающего ваш пользовательский интерфейс (UI). Как только вы начинаете добавлять к вашему приложению такие «затратные по времени» куски кода, как загрузка данных из сети или обработка изображений на main thread (главном потоке), то работа вашего UI начинает сильно замедляться и даже может привести к полному его «замораживанию». 
Как можно изменить архитектуру приложения, чтобы таких проблем не возникало? В этом случае на помощь приходит многопоточность (
сoncurrency), которая позволяет одновременно выполнять две или более независимые задачи (tasks): вычисления, загрузку данных из сети или с диска, обработку изображений и т.д.Видеозаписи докладов конференции мобильных разработчиков MBLTdev 16
- доклады по iOS- и Android-разработке,
- воркшоп по Firebase от Google,
- трек по UX/UI от преподавателей Британской высшей школы дизайна.

UIColor и UIImage в Xcode 8 при помощи литералов
Работа с UIImage и UIColor из кода была не слишком удобной, потому что трудно представить себе цвет UIColor(red: 0.2, green: 0.4, blue: 0.6, alpha: 1) или UIImage(named: "pattern25"), если ты не дизайнер, конечно.
Для меня было чудом то, что Apple сделали в последних версиях Playground, а именно
- Возможность указывать цвет, выбирая из палитры цветов:

- Возможность выбирать изображение из тех, что находятся в ресурсах:

Цвет представлен очень наглядно и при клике на него, можно узнать какие значения RGBA он имеет и подтюнить его по необходимости.
Миниатюры картинок тоже выглядят гораздо нагляднее, чем просто названия ресурсов. К тому же инициализируя UIImage при помощи failable initializer init(named: String) -> UIImage? мы рискуем получить nil, неправильно указав имя ресурса. Литералы же всегда возвращают значение.
Пишем универсальный UICollectionViewLayout
Главная особенность подобных UICollectionViewLayout состоит в том, что в каждом таком расположении можно выделить некую закономерность, по которой происходит повторение размеров и положений элементов. В дальнейшем будем называть это шаблоном. Соответственно, чтобы сделать UICollectionViewLayout нужно составить алгоритм, который формирует шаблон. Пример шаблона повторения:

Анимации в iOS для начинающих. Модели, классы от Core Animation, блоки
Эта статья — введение в мир анимаций для iOS-приложений. Рекомендуется тем, кто никода не работал с анимациями, либо не понимает некоторые моменты в стандартных iOS-анимациях.
Обработка препроцессорных директив в Objective-C
Язык программирования с препроцессорными директивами сложен для обработки, поскольку в этом случае необходимо вычислять значения директив, вырезать некомпилируемые фрагменты кода, а затем производить парсинг очищенного кода. Обработка директив может осуществляться во время парсинга обычного кода. Данная статья подробно описывает оба подхода применительно к языку Objective-C, а также раскрывает их достоинства и недостатки. Эти подходы существуют не только в теории, но уже реализованы и используются на практике в таких веб-сервисах, как Swiftify и Codebeat.

Swiftify — веб-сервис для преобразования исходников на Objective-C в Swift. На данный момент сервис поддерживает обработку как одиночных файлов, так и целых проектов. Таким образом, он может сэкономить время разработчикам, желающим освоить новый язык от Apple.

Codebeat — автоматизированная система для подсчета метрик кода и проведения анализа различных языков программирования, в том числе и Objective-C.
SwiftLint — чистота и порядок в iOS проекте
Думаю, все знают, как бывает непросто поддерживать соблюдение code style и соглашений в iOS-проекте. Сегодня поговорим о том, как автоматизировать этот процесс с помощью утилиты SwiftLint.
iOS: работа с галереей (Photos framework)
Насколько удобным может быть API для рисования в iOS?
Здравствуйте, меня зовут Виктор, я работаю в компании Exyte. Недавно мы выложили в open source нашу внутреннюю разработку — библиотеку для работы с векторной графикой и ее анимации Macaw. Я хочу поделиться впечатлениями от применения ее в реальном проекте и рассказать о ее преимуществах над нативным API.
Как разработчикам, нам часто приходится создавать нестандартные контролы и повторять одни и те же рутинные действия даже для простых эффектов:
- Отнаследоваться от UIView, чтобы переопределить drawRect
- Описать "сцену" используя устаревший Core Graphics API
Давайте попробуем создать нестандартный контрол и используем его как пример:

Тап жест для скрытия клавиатуры в iOS (Swift 3)
В данной статье разберем, как скрывать клавиатуру по нажатию на вьюху от самых основ до реализации в одну строчку или совсем без кода.

Ближайшие события
AppCode 2016.3: поддержка Swift 3, новые настройки форматирования, улучшения быстродействия и многое другое
Совсем недавно вышел AppCode 2016.3, и в этом посте мы расскажем о самых интересных изменениях в нем.

Мобильный банк для iOS: добавляем блочную архитектуру к Cocoa MVC
- Надёжность;
- Скорость внесения изменений.
Ситуация такова, что нужно уметь вносить изменения (и в частности выкатывать новые банковские продукты) действительно быстро. Но при этом не скатываться в индусокод и копипаст (см. пункт 1). Всё это при том, что приложение действительно огромное по функционалу, по крайней мере в задумке (банки хотят намного больше, чем умеют). Соответственно, во многих случаях это проекты на десятки человеко-лет. Те, кто участвовал в таких проектах, уже наверно поняли, что задача нетривиальная, и школьные знания тут не помогут.
Секреты удачного апдейта: интерфейс, backend, структура приложения
Здорово, правда? Нам тоже так казалось, пока нынешней осенью не была поставлена задача на новую, улучшенную версию продукта. Что именно улучшать — оставалось на наше усмотрение, поэтому функционал мы сразу решили оставить в покое: он был вполне достаточным и при этом не перегруженным. А вот UX составляющая и техническое исполнение подверглись существенному пересмотру. О том, как мы делали из изначально неплохого приложения конфетку, читайте ниже.

Внедрение NSTouchBar на Swift

Разгоняем сборку Swift проекта в Xcode
Статья о том как починить инкрементальную компиляцию в Xcode для Swift проектов и ускорить build phases для Cocoapods и Carthage, ничего не поломав.
Небольшой спойлер: на трех разных проектах получилось сократить время инкрементальной сборки в 9 раз!
Туториал несет сугубо практический характер с минимумом воды. Обязательно к прочтению для действующих iOS разработчиков.
Использование паттерна SchedulableObject для выделения бизнес-логики в отдельный поток

Интерфейс мобильного приложения — это лицо продукта. Чем более отзывчив интерфейс, тем больше радости приносит продукт. Однако удовлетворённость от использования приложения зависит прежде всего от объёма его функций. По мере увеличения количества и сложности задач они требуют всё больше и больше времени. Если архитектура приложения предполагает, что все они выполняются в главном потоке, то задачи бизнес-логики начинают конкурировать за время с задачами отрисовки интерфейса. При таком подходе рано или поздно обязательно находится сценарий, исполнение которого приводит к залипанию приложения. Для борьбы с этой напастью существует три принципиально разных подхода:
- Оптимизация алгоритмов и структур данных, вовлечённых в исполнение проблемного сценария.
- Вынос проблемного сценария из главного потока.
- Вынос из главного потока всех функций приложения, за исключением собственно рендеринга пользовательского интерфейса.
Паттерн SchedulableObject позволяет аккуратно реализовать третий сценарий. Под катом рассматриваются его части с примерами реализации на Swift, а также преимущества и недостатки по сравнению с первыми двумя подходами.
Объясняем бабушке, как написать свой язык программирования

Пишем свой язык программирования (на Swift)
Для того, чтобы написать свой язык программирования, необязательно иметь степень в Computer Science, достаточно понимать 3 базовых шага.
Язык: Mu(μ)
Mu — это минимальный язык, который содержит постфиксный оператор, бинарную операцию и «одноциферные» числа.
Пример: (s 2 4) or (s (s 4 5) 4) or (s (s 4 5) (s 3 2))…
Вклад авторов
WildGreyPlus 232.0miden16 170.0illusionofchaos 140.0MaxRokatansky 135.0kuradnaths 131.0nsurl-dev 121.0yarmolchuk 119.8niklnd 112.0freetonik 112.0
