Как стать автором
Обновить

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

Время на прочтение 3 мин
Количество просмотров 2.5K
Разработка под iOS *Swift *Разработка под MacOS *Системы сборки *Софт

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

Читать далее
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 0

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

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

Читать дальше →
Всего голосов 20: ↑19 и ↓1 +18
Комментарии 5

Вышел AppCode 2.5

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

Конкретнее, пожалуйста!
Всего голосов 34: ↑31 и ↓3 +28
Комментарии 17

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

Время на прочтение 14 мин
Количество просмотров 18K
Разработка под iOS *
image
Да, такой заголовок не очень-то наполнен смыслом, поэтому дам несколько пояснений, для тех кто еще думает «идти под кат или нет?».

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

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


Тогда вам под кат.
Читать дальше →
Всего голосов 18: ↑16 и ↓2 +14
Комментарии 6

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

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

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

Время на прочтение 4 мин
Количество просмотров 46K
Разработка под iOS *Xcode *
Из песочницы
CocoaPods — это очень мощный инструмент, имеющий статус must have для любого iOS Developer'а. С помощью него мы можем легко, быстро и просто подключать различные вкусные тулзы, утилиты и библиотеки, которые значительно облегчают нам жизнь при разработке приложений. Но всяким инструментом надо уметь пользоваться и CocoaPods не исключение.
Под катом информация, которая позволит начать освоение этого инструмента (основано на том, что изложено в документации и собственном опыте). И так, дорогой читатель, отложи в сторону микроскоп, хватит уже им гвозди заколачивать и продолжай читать.
Читать дальше
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 0

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

Время на прочтение 26 мин
Количество просмотров 35K
Разработка под iOS *Objective C *Xcode *
Из песочницы

Вступление


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

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

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

Время на прочтение 15 мин
Количество просмотров 33K
Разработка под iOS *Разработка мобильных приложений *Cocoa *Objective C *Swift *
Туториал
Перевод


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

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

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

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

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

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

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

Время на прочтение 3 мин
Количество просмотров 8K
Блог компании JetBrains Разработка под iOS *C++ *Разработка мобильных приложений *Swift *
Привет, Хабр!

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



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

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

Время на прочтение 3 мин
Количество просмотров 11K
Блог компании e-legion Разработка под iOS *Swift *
Туториал

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

Читать дальше →
Всего голосов 15: ↑14 и ↓1 +13
Комментарии 7

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

Время на прочтение 4 мин
Количество просмотров 7.1K
Разработка под iOS *Разработка мобильных приложений *Xcode *Swift *
Из песочницы
UICollectionView может иметь практически любое расположение элементов. Элементы могут иметь как фиксированные размеры, так и динамические. В данной публикации внимание будет уделено только тем UICollectionViewLayout, размеры элементов которых фиксированы и задаются определенным алгоритмом (типичный пример — расположение иконок на экране Home вашего iPhone). Так же будет сделана попытка описать подход к формированию единого UICollectionViewLayout.

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

image

Читать дальше →
Всего голосов 22: ↑21 и ↓1 +20
Комментарии 0

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

Время на прочтение 7 мин
Количество просмотров 10K
Разработка под 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-модуль
Читать дальше →
Всего голосов 9: ↑8 и ↓1 +7
Комментарии 7

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

Время на прочтение 12 мин
Количество просмотров 9.3K
Блог компании red_mad_robot Программирование *Разработка мобильных приложений *


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

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

Время на прочтение 5 мин
Количество просмотров 6K
Разработка под iOS *Objective C *Xcode *Swift *
Туториал
— “Какая-то библиотека, кто-то обновил… Хейтер тут причем? Почему мне, отличному разработчику, нужно тратить время на эту статью?

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

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

Время на прочтение 3 мин
Количество просмотров 7.7K
Разработка под iOS *Разработка мобильных приложений *Objective C *Xcode *Swift *
Пока в соседней комнате готовят оливье, я пишу небольшой туториал как рисовать кодом. Сразу представляются строчки кода с дробными числами, где ведём линию по точкам. А для вычисления радиуса окружности берём яд змеи, надежность хранения фото в iCloud и шепчем заклинание. Пугает, понимаю. Даже в ролике на YouTube вставил шутку:

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

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

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

Время на прочтение 7 мин
Количество просмотров 7.6K
Программирование *Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *
Перевод
Разрабатывая мобильные приложения, мне не раз приходилось создавать проекты с нуля. При этом я и моя команда всегда тратили много времени на основную настройку проекта, такие как интеграция сторонних инструментов, настройка структуры проекта, написание базовых классов, интеграция внешних библиотек и т.д.

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

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

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

Время на прочтение 11 мин
Количество просмотров 2.5K
Блог компании Яндекс Разработка под iOS *Разработка мобильных приложений *Cocoa *Тестирование мобильных приложений *
Мы в команде Яндекс.Карт для iOS создаем тестовые проекты с помощью маленького плагина для CocoaPods и нескольких классов утилит. Создание проекта происходит быстро и надежно. Но может, мы слишком заморачиваемся и собрать проект вручную с нужными настройками и зависимостями не так сложно? В докладе я пошел от противного: сначала разобрал ручной процесс, потом наш.


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

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

Время на прочтение 7 мин
Количество просмотров 7.9K
Блог компании VK Блог компании Delivery Club Tech Разработка под iOS *Objective C *Swift *


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

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

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

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

Время на прочтение 12 мин
Количество просмотров 8.3K
Блог компании Badoo Разработка под iOS *Разработка мобильных приложений *Objective C *Swift *

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

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

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

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

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

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

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

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

Читать далее
Всего голосов 25: ↑24 и ↓1 +23
Комментарии 8

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

Время на прочтение 7 мин
Количество просмотров 2.4K
Разработка под iOS *Xcode *Swift *

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

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

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

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

Читать полностью
Всего голосов 6: ↑5 и ↓1 +4
Комментарии 3
1