Pull to refresh
  • by relevance
  • by date
  • by rating

CocоaPods — мощное средство в руках Objective-C разработчика

Luxoft corporate blog Development for iOS *
CocoaPods — это мощное и одновременно изящное средство управления зависимостями Cocoa-библиотек, которые разработчики используют в своих iOS и MacOS X проектах. Как обычно для Cocoa-статей мы сфокусируемся именно на iOS разработке.



Читать дальше →
Total votes 35: ↑32 and ↓3 +29
Views 70K
Comments 52

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

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

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

Вышел AppCode 2.5

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

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

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

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

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

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


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

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

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

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

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

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

Development for iOS *Objective C *Xcode *
Sandbox

Вступление


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

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

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

Development for iOS *Development of mobile applications *Cocoa *Objective C *Swift *
Translation
Tutorial


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
Views 29K
Comments 1

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

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
Views 7.9K
Comments 30

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

e-Legion corporate blog Development for iOS *Swift *
Tutorial

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

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

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

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
Views 6.8K
Comments 0

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

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
Views 9.3K
Comments 7

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

red_mad_robot corporate blog Programming *Development of mobile applications *


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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

Mail.ru Group 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
Views 4.5K
Comments 6

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

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
Views 5.4K
Comments 8

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

Development for iOS *Xcode *Swift *

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

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

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

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

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