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

Компания Viber временно не ведёт блог на Хабре

Сначала показывать

Решение проблемы с циклическими ссылками в блоках ObjC

Время на прочтение12 мин
Количество просмотров30K
О блоках в ObjC и правильной работе с ними написано очень много, в том числе и на хабре. Вопрос о том, как правильно работать с self в блоках, чтобы избежать циклических ссылок, регулярно задается на собеседованиях. При использовании таких фреймворков, как ReactiveCocoa количество блоков в коде сильно возрастает, при этом увеличивается шанс допустить ошибку и потерять в памяти объекты. Про попытку окончательно решить эту проблему, метапрограммирование для с99 с экстеншнами и блоками + хипстерсткие макросы с @ под катом.
Читать дальше →

MobileOptimized — мобильный уикенд в Минске с facebook, google и другими разработчиками

Время на прочтение3 мин
Количество просмотров2.8K
Этот пост о конференции MobileOptimized в Минске, и о том, как это, вероятно, одно из лучших мероприятий в СНГ для технологического нетворкинга в сфере разработки мобильных приложений.

MobileOptimized 2014 – впервые крупнейшая конференция для разработчиков мобильных приложений в Беларуси вышла на уровень лучших Европейских мероприятий. 2 дня, 60 докладчиков из США, Австралии, Тайваня, Англии, Германии, Голландии, Норвегии, Финляндии, Польши, Украины, России и Беларуси. Под крышей мероприятия соберутся для знакомства 15 технологических сообществ из разных городов Голландии, Польши, Беларуси, Украины, Литвы и России. Мероприятие пройдет 28-29 июня в Минске. Сайт конференции — mo.dev.by.

image

День Кейноутов, День Сообществ и подробнее о мероприятии

Вывод текста в iOS: CoreText, NSAttributedString

Время на прочтение11 мин
Количество просмотров10K
Я хотел бы Вам рассказать про вывод текста на экран в iOS. Вначале это задумывалось как туториал, затем как сбор неочевидных фактов, а получилось что получилось.

Способы вывода текста условно можно разделить на несколько категорий:

  • UIKit — привычные UI контролы. Дают только базовые возможности по отображению, совсем мало возможностей по форматированию
  • UIKit + NSAttributedString — привычные UI контролы с возможностью установки строки с атрибутами отображения. Куча возможностей по форматированию
  • CoreText — фреймворк для работы с текстом и текстовыми представлениями. В связке с NSAttributedString дает массу возможностей по форматированию текста и, благодаря нескольким уровням абстракций над элементами текста, расширенные методы по их отображению
  • CoreGraphics — с помощью него тоже можно отрисовывать текст

Читать дальше →

Программирование звука с низкой задержкой в iOS

Время на прочтение6 мин
Количество просмотров15K
В статье будут рассмотрены особенности работы низкоуровневого API для работы со звуком в iOS, с которыми пришлось столкнуться при разработке Viber. Речь пойдет о выборе размера аппаратного буфера и поведении AudioUnit при изменений частоты дискретизации.

Для программной работы со звуком в iOS Apple предоставляет 4 группы API, каждая из которых предназначена для решения определенного класса задач:
  • AVFoundation позволяет проигрывать и записывать файлы и буферы в памяти с возможностью использовать предоставляемые платформой аппаратные или программные реализации некоторых аудио-кодеков. Рекомендуется использовать, когда нет жестких требований к низкой задержке проигрывания и воспроизведения.
  • OpenAL API предназначено для рендеринга и воспроизведения трехмерного звука а так же использования звуковых эффектов. Применяется, в основном, в играх. Обеспечивает низкую задержку воспроизведения, но не предоставляет возможности записывать звук.
  • AudioQueue базовое API для записи и воспроизведения аудиопотоков с возможностью использования кодеков, предоставляемых платформой. Используя это API, не получится получить минимальную задержку, но пользоваться им крайне просто.
  • И наконец AudioUnit, мощное и богатое API, для работы со звуковыми потоками. По сравнению с Mac OS X на iOS программисту доступно не полностью, но для записи и воспроизведения звука как можно ближе к «железу» подходит лучше всего.

Поговорим про AudioUnit и iOS