Pull to refresh

Spotify представила XCRemoteCache — инструмент удаленного кеширования для iOS, сокращающий время чистой сборки на 70%

Reading time 3 min
Views 2.5K
Development for iOS *Swift *Development for MacOS *Build automation *Software

Разработчики Spotify открыли исходный код библиотеки XCRemoteCache, которая помогает ускорить время сборки iOS-проектов. Инженеры компании заявляют, что использование инструмента внутри команды позволило сократить время чистой сборки на 70%. Библиотека построена на принципе использования удаленного кэширования с целью повторного использования целевых артефактов в Xcode. Инструмент совместим кодом, написанным на Swift, Objective-C и на связке двух языков сразу.

Читать далее
Total votes 7: ↑7 and ↓0 +7
Comments 0

Xcode: управляем зависимостями собственных библиотек в проектах. Cocoapods advanced

Reading time 5 min
Views 20K
Development for iOS *Objective C *
Cocoapods – это менеджер зависимостей библиотек в Xcode проектах. Я не буду рассказывать, как с его помощью подключить в проект уже существующую библиотеку, информации достаточно, в том числе и эта статья на Хабре. Я расскажу что делать, если вы не нашли нужную вам библиотеку в списке, или, что ещё хуже, вы хотите создать свою библиотеку и, как вариант, не делать её доступной.

Читать дальше →
Total votes 20: ↑19 and ↓1 +18
Comments 5

Вышел AppCode 2.5

Reading time 1 min
Views 9.7K
JetBrains corporate blog Objective C *
Привет, хабр! У нас прекрасные новости: только что выпущена новая версия AppCode — нашей классной IDE для Objective-C. В версии 2.5 вас ждет полная поддержка Xcode 5, встроенная интеграция с CocoaPods, усовершенствованное юнит-тестирование и многие другие улучшения.

Конкретнее, пожалуйста!
Total votes 34: ↑31 and ↓3 +28
Comments 17

Собираем Акулу под iOS и OSX

Reading time 14 min
Views 18K
Development for iOS *
image
Да, такой заголовок не очень-то наполнен смыслом, поэтому дам несколько пояснений, для тех кто еще думает «идти под кат или нет?».

Shark — набор С++ библиотек машинного обучения (Machine Learning), а именно линейная и нелинейная оптимизация, нейронные сети, обучение с учителем и без, эволюционные алгоритмы и многое другое. Более детальное описание можно найти на сайте проекта.

Если вас интересуют ответы на следующие вопросы
  • Как собрать статическую библиотеку для iOS?
  • Как создать фреймворк для iOS?
  • Как опубликовать iOS и OSX фреймворк через CocoaPods?


Тогда вам под кат.
Читать дальше →
Total votes 18: ↑16 and ↓2 +14
Comments 6

Даниил Дубровкин: «Оттого что они не пишут open source, они плохими инженерами не стали»

Reading time 9 min
Views 11K
Caspowa corporate blog Website development *Open source *
Представляем шестой выпуск подкаста о технологиях, процессах, инфраструктуре и людях в IT-компаниях. Сегодня в гостях у “CTOcast” — Даниил Дубровкин (Daniel Doubrovkine), технический директор компании Artsy и open source энтузиаст.
Читать дальше →
Total votes 28: ↑25 and ↓3 +22
Comments 1

Основы использования Cocoapods в разработке приложений под iOS

Reading time 4 min
Views 45K
Development for iOS *Xcode *
Sandbox
CocoaPods — это очень мощный инструмент, имеющий статус must have для любого iOS Developer'а. С помощью него мы можем легко, быстро и просто подключать различные вкусные тулзы, утилиты и библиотеки, которые значительно облегчают нам жизнь при разработке приложений. Но всяким инструментом надо уметь пользоваться и CocoaPods не исключение.
Под катом информация, которая позволит начать освоение этого инструмента (основано на том, что изложено в документации и собственном опыте). И так, дорогой читатель, отложи в сторону микроскоп, хватит уже им гвозди заколачивать и продолжай читать.
Читать дальше
Total votes 16: ↑15 and ↓1 +14
Comments 0

iOS Инструменты разработчика

Reading time 26 min
Views 35K
Development for iOS *Objective C *Xcode *
Sandbox

Вступление


Всем привет, меня зовут Григорий, последние 5 лет занимался программированием под iOS. Сейчас решил сменить сферу деятельности и ударился в веб, но чтобы добро не пропадало, хочу поделиться с сообществом своими наработками, накопившимися за это время. Библиотеки выложены на GitHub и добавлены в CocoaPods. Инструкции по установке и использованию вы сможете найти по ссылкам на GitHub, здесь же будет краткое описание.

Минимальная поддерживаемая версия — iOS 6.0.
Читать дальше →
Total votes 38: ↑35 and ↓3 +32
Comments 27

Использование Carthage для управления зависимостями

Reading time 15 min
Views 32K
Development for iOS *Development of mobile applications *Cocoa *Objective C *Swift *
Tutorial
Translation


iOS разработчики это — фантастическое сообщество, которое предлагает широкий спектр доступных сторонних библиотек.

Если вы разрабатывали для этой платформы, тогда, скорее всего пользовались хотя бы одной из этих библиотек. Будь это AFNetworking, SDWebImage, SSKeychain или CocoaLumberjack, и уже должны понимать важность использования чужого кода, если вы не любите «изобретать свой велосипед».

Есть CocoaPods. Если по какой-то причине вы не знакомы с этим прекрасным инструментом, так это самый популярный менеджер зависимостей, который упрощает процесс интеграции такого рода библиотек в ваш проект.

CocoaPods широко используется в iOS сообществе, и даже Google использует его для распространения различных iOS SDK.

Хоть CocoaPods и потрясающее средство для управления зависимостями, есть и другие варианты. Carthage является одним из таких вариантов; это безжалостно простой менеджер зависимостей для Mac и iOS, созданный группой разработчиков из Github.

Это был первый менеджер зависимостей для работы с Swift; фактически, сам Carthage написан на Swift'e! Он использует исключительно динамические фреймворки вместо статических библиотек – это только способ распространения двоичных файлов Swift, которые поддерживаются в iOS 8 и выше.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Comments 1

Релиз AppCode 2016.1: улучшенная поддержка Swift и C++

Reading time 3 min
Views 8K
JetBrains corporate blog Development for iOS *C++ *Development of mobile applications *Swift *
Привет, Хабр!

На прошлой неделе вышел AppCode 2016.1. Изначально мы анонсировали его как 3.4, но потом совместно с другими десктопными продуктами JetBrains перешли на новую схему версионирования и теперь будем использовать ее.



С момента выпуска версии 3.3 прошло еще два минорных релиза, в которых появилось много полезного (например, Evaluate Expression и Set Value для отладчика в Swift). В 2016.1 мы в основном продолжали работать над поддержкой Swift — и вот что получилось.
Читать дальше →
Total votes 9: ↑9 and ↓0 +9
Comments 30

Создание библиотеки для iOS

Reading time 3 min
Views 11K
e-legion corporate blog Development for iOS *Swift *
Tutorial

Разработчики часто сталкиваются с типовыми задачами, которые появляются в новых проектах. Постепенно накапливается база вспомогательного кода, которая собирается в библиотеки и переносится из проекта в проект. И чем больше проектов, тем тяжелее становится поддерживать такие библиотеки.
image

Читать дальше →
Total votes 15: ↑14 and ↓1 +13
Comments 7

Пишем универсальный UICollectionViewLayout

Reading time 4 min
Views 7.1K
Development for iOS *Development of mobile applications *Xcode *Swift *
Sandbox
UICollectionView может иметь практически любое расположение элементов. Элементы могут иметь как фиксированные размеры, так и динамические. В данной публикации внимание будет уделено только тем UICollectionViewLayout, размеры элементов которых фиксированы и задаются определенным алгоритмом (типичный пример — расположение иконок на экране Home вашего iPhone). Так же будет сделана попытка описать подход к формированию единого UICollectionViewLayout.

Главная особенность подобных UICollectionViewLayout состоит в том, что в каждом таком расположении можно выделить некую закономерность, по которой происходит повторение размеров и положений элементов. В дальнейшем будем называть это шаблоном. Соответственно, чтобы сделать UICollectionViewLayout нужно составить алгоритм, который формирует шаблон. Пример шаблона повторения:

image

Читать дальше →
Total votes 22: ↑21 and ↓1 +20
Comments 0

Эффективная DI библиотека на Swift в 200 строк кода

Reading time 7 min
Views 9.9K
Development for iOS *Swift *
Библиотека EasyDi содержит контейнер зависимостей для Swift. Синтаксис этой библиотеки был специально разработан для быстрого освоения и эффективного использования. Она умещается в 200 строк, при этом умеет все, что нужно взрослой Di библиотеке:

— Создание объектов и внедрение зависимостей в существующие
— Разделение на контейнеры — Assemblies
— Типы разрешения зависимостей: граф объектов, синглетон, прототип
— Разрешение циклических зависимостей
— Подмена объектов и конктесты зависимостей для тестов

В EasyDi нет разделения на register/resolve. Вместо этого зависимости описываются вот так:

var apiClient: IAPIClient {
  return define(init: APIClient()) {
    $0.baseURl = self.baseURL
  }
}

Cocoapods / EasyDi
Github / EasyDi

Под катом очень краткое описание «Зачем DI и что это», также примеры использования библиотеки:

  • Как использовать и типы зависимостей
  • Как тестировать c подменой объектов
  • Как можно это использовать для A/B тестов
  • Как собрать VIPER-модуль
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 7

Менеджеры зависимостей

Reading time 12 min
Views 9.1K
red_mad_robot corporate blog Programming *Development of mobile applications *


В этой статье я расскажу, в чем менеджеры зависимостей (package manager) схожи по внутреннему устройству, алгоритму работы, и в чем их принципиальные отличия. Я рассматривал package manager’ы, предназначенные для разработки под iOS/OS X, но содержание статьи с некоторыми допущениями применимо и к другим.
Читать дальше →
Total votes 19: ↑17 and ↓2 +15
Comments 0

Обновление библиотеки SPPermission и хейтер

Reading time 5 min
Views 6K
Development for iOS *Objective C *Xcode *Swift *
Tutorial
— “Какая-то библиотека, кто-то обновил… Хейтер тут причем? Почему мне, отличному разработчику, нужно тратить время на эту статью?

мог подумать ты, мой дорогой друг. Не нужно тратить время. Это просто вечернее чтиво с долей несмешных юморесок. Текст будет о библиотеке RequestPermission и о её загадочном авторе.
Читать дальше →
Total votes 11: ↑10 and ↓1 +9
Comments 7

Рисуем кодом в Swift, PaintCode

Reading time 3 min
Views 7.5K
Development for iOS *Development of mobile applications *Objective C *Xcode *Swift *
Пока в соседней комнате готовят оливье, я пишу небольшой туториал как рисовать кодом. Сразу представляются строчки кода с дробными числами, где ведём линию по точкам. А для вычисления радиуса окружности берём яд змеи, надежность хранения фото в iCloud и шепчем заклинание. Пугает, понимаю. Даже в ролике на YouTube вставил шутку:

— “Ааастановите, пожалуйста, вот у магазина” — прокричал герой российского сериала.

В целом, дорогой друг, ты прав. Будут и дробные числа, и куча строчек кода. Но будет намного проще. Интересно? Давай к делу.
Читать дальше →
Total votes 6: ↑4 and ↓2 +2
Comments 8

Лучшие практики и инструменты при разработке iOS приложений

Reading time 7 min
Views 7.5K
Programming *Development for iOS *Development of mobile applications *Objective C *Swift *
Translation
Разрабатывая мобильные приложения, мне не раз приходилось создавать проекты с нуля. При этом я и моя команда всегда тратили много времени на основную настройку проекта, такие как интеграция сторонних инструментов, настройка структуры проекта, написание базовых классов, интеграция внешних библиотек и т.д.

Я решил, что время, затрачиваемое на запуск проекта, можно уменьшить, а основную часть процесса можно автоматизировать. При этом я собрал лучшие практики и инструменты, которые мы использовали, и подготовил шаблон проекта, который мы используем при запуске новых проектов. Такой шаблон должен сэкономить время разработчика на конфигурацию нового проекта, а также обеспечить общую структуру проекта, к которой привыкнет каждый член команды, чтобы больше не приходилось думать и изучать структуру нового для него проекта. Теперь это всегда одинаково.

Каждый инструмент или подход, добавленный в шаблон, заслуживают отдельной статьи, но я хотел бы попытаться суммировать каждый пункт и дать краткое объяснение того, почему я включил их в данную статью.
Читать дальше →
Total votes 9: ↑8 and ↓1 +7
Comments 14

Тестовые проекты без боли. Доклад Яндекса

Reading time 11 min
Views 2.4K
Яндекс corporate blog Development for iOS *Development of mobile applications *Cocoa *Mobile applications testing *
Мы в команде Яндекс.Карт для iOS создаем тестовые проекты с помощью маленького плагина для CocoaPods и нескольких классов утилит. Создание проекта происходит быстро и надежно. Но может, мы слишком заморачиваемся и собрать проект вручную с нужными настройками и зависимостями не так сложно? В докладе я пошел от противного: сначала разобрал ручной процесс, потом наш.


— Сначала маленькая предыстория. Яндекс.Карты собираются больше минуты. На моем компьютере сборка приложения занимает чуть больше трех минут. Мы разрабатываем в тестовых проектах, чтобы тратить меньше времени на каждую сборку. У нас достаточно прокачанная модульность, и для каждого модуля мы делаем тестовый проект. В этом тестовом проекте ведется разработка фичи.
Total votes 11: ↑11 and ↓0 +11
Comments 0

Разделяй и властвуй. Модульное приложение из монолита на Objective-C и Swift

Reading time 7 min
Views 7.5K
VK corporate blog Delivery Club Tech corporate blog Development for iOS *Objective C *Swift *


Привет, Хабр! Меня зовут Василий Козлов, я iOS-техлид в Delivery Club, и застал проект в его монолитном виде. Признаюсь, что приложил руку к тому, борьбе с чем посвящена эта статья, но раскаялся и трансформировал своё сознание вместе с проектом.

Я хочу рассказать, как разбивал существующий проект на Objective-C и Swift на отдельные модули — framework’и. Согласно Apple, framework — это директория определенной структуры.

Изначально мы поставили цель: обособить код, реализующий функцию чата для поддержки пользователей, и уменьшить длительность сборки. Это привело к полезным последствиям, которым сложно следовать, не имея привычки и существуя в монолитном мире одного проекта.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Comments 6

Модуляризация iOS-приложения: зачем и как мы разбиваем Badoo на модули

Reading time 12 min
Views 8K
Badoo corporate blog Development for iOS *Development of mobile applications *Objective C *Swift *

В iOS-разработке Badoo мы уже несколько лет занимаемся созданием модулей, и большая часть нового кода разрабатывается вне кодовой базы приложений. Сейчас у нас более 100 модулей для Badoo и Bumble. В этой статье я расскажу о нашем опыте и отвечу на самые популярные вопросы о модуляризации: 

— по какому принципу выделять модули; 

— как организовать связи между ними; 

— достаточно ли для фичи одного фреймворка; 

— как сократить время запуска многомодульного приложения; 

— зачем в этом процессе мониторинг;

— можно ли автоматизировать создание новых модулей и так далее. 

Мой коллега, лид команды iOS-разработки и Core-команды Артем Лоенко, в начале года говорил об этом на митапе FunCorp в докладе «Катастрофически полезные последствия модуляризации». Я приведу более подробный разбор процесса модуляризации и некоторых опущенных в его рассказе деталей.

Читать далее
Total votes 25: ↑24 and ↓1 +23
Comments 8

Библиотека для работы с iOS-пермишенами, от идеи до релиза (часть 1)

Reading time 7 min
Views 2.3K
Development for iOS *Xcode *Swift *

• Каĸ унаследовать Swift-ĸласс не целиĸом, а лишь то в нём, что тебе нужно?

• Каĸ позволить юзеру твоей CocoaPods- или Carthage-библиотеĸи ĸомпилировать лишь те её части, что он действительно использует?

• Каĸ раздербанить ресурсы iOS, чтобы достать оттуда ĸонĸретные системные иĸонĸи и лоĸализованные строĸи?

• Каĸ поддержать completion blocks даже там, где это не предусмотрено дефолтным API системных разрешений?

Читать полностью
Total votes 6: ↑5 and ↓1 +4
Comments 3
1