Как стать автором
Обновить
19
0
Гуменный Руслан @Fanruten

Пользователь

Отправить сообщение

Тренды iOS–разработки 2014 года

Время на прочтение3 мин
Количество просмотров27K

Подходит к концу 2014 год, и сейчас самое время подвести итоги и выделить ключевые тренды в iOS разработке.

Functional Reactive Programming


Благодаря фреймворку ReactiveCocoa, новая парадигма программирования все чаще используется среди iOS разработчиков.

Отказоустойчивость, отзывчивость, ориентированность на события и масштабируемость — вот четыре принципа реактивного программирования. Подробности можете узнать в реактивном манифесте (перевод на Хабре).

Для себя я выделил следующие преимущества реактивного подхода:
  • loose coupling — потоки события позволяют уменьшить связанность между различными частями кода;
  • explicit state — состояние программы определяется набором событий, и поэтому им становится легко управлять.

В качестве альтернативы реактивному подходу рекомендую посмотреть на Futures. Есть как минимум два интересных фреймворка: PromiseKit и CollapsingFutures
Читать дальше →
Всего голосов 39: ↑34 и ↓5+29
Комментарии28

Multiple Delegate

Время на прочтение4 мин
Количество просмотров10K
В Cocoa очень популярен паттерн делегирование. Стандартный способ реализации этого паттерна — добавление к делегатору weak свойства, которое хранит ссылку на делегат.

У делегирования много различных применений. Например, реализация какого-то поведения в другом классе без наследования. Еще делегирование используется как способ передачи уведомлений. Например, UITextField вызывает у делегата метод textFieldDidEndEditing:, который информирует его о том, что редактирование закончено, и т.д.

А теперь представьте задачу: надо сделать так, чтобы делегатор посылал сообщения не одному делегату, а нескольким, причем делегирование реализовано стандартным методом через свойство.
Читать дальше →
Всего голосов 22: ↑20 и ↓2+18
Комментарии6

Приватные методы для отладки

Время на прочтение13 мин
Количество просмотров8.5K
Наверняка уже все знают, что у UIView есть полезный метод recursiveDescription.
Вызов которого, вернет строку с описанием всей иерархии вью.

(lldb) po [[self view] recursiveDescription]
<UIView: 0x6a107c0; frame = (0 20; 320 460); autoresize = W+H; layer = […]
   | <UIRoundedRectButton: 0x6a103e0; frame = (124 196; 72 37); opaque = NO; […]
   |    | <UIButtonLabel: 0x6a117b0; frame = (19 8; 34 21); text = 'Test'; […]
   .....

Еще многие знают, что при помощи рантайма, можно получить список переменных/методов/свойств/протоколов/… класса. И обычно для этих целей пишут вспомогательный код. Но оказывается, все уже давно написано сотрудниками Apple. В UIKit.framework реализована категория с именем IvarDescription.

@interface NSObject (IvarDescription)
- (id)_shortMethodDescription;
- (id)_methodDescription;
- (id)__methodDescriptionForClass:(Class)arg1;
- (id)_ivarDescription;
- (id)__ivarDescriptionForClass:(Class)arg1;
@end

Названия метдов говорят за себя. Но давайте посмотрим, что же они возвращают.
Читать дальше →
Всего голосов 26: ↑20 и ↓6+14
Комментарии1

iOS 8 — Widgets

Время на прочтение8 мин
Количество просмотров29K

С выходом iOS 8 у разработчиков появилась возможность создавать свои виджеты для экрана Today. Пока еще API окончательно не утряслось, есть Known Issue и много неописанных в документации моментов. Но если вы все же хотите сделать свой виджет, то прошу под кат (внимание, в примерах используется Swift).
Читать дальше →
Всего голосов 35: ↑34 и ↓1+33
Комментарии16

Устройство блоков в Objective-C

Время на прочтение6 мин
Количество просмотров19K
image
В Objective-C есть такая штука, как блоки, которая является реализацией концепции замыканий.

Есть много статей о том, как правильно использовать блоки (когда вызывать copy, как избавиться от retain циклов и т. д.), но при этом устройства блоков обычно не затрагивают. Собственно, давайте восполним этот пробел.
Читать дальше →
Всего голосов 38: ↑33 и ↓5+28
Комментарии3

Обновление сертификатов на билд сервере

Время на прочтение2 мин
Количество просмотров5.7K

Во многих компаниях используют Continuous Integration.
Например, в Git может быть три ветки: customer, master, test.
Пуш в customer или test инициирует создание сборки, а также ее доставку на устройства заказчика или тестировщиков.

Для распространения тестовых сборок на iOS, используются Ad Hoc профайлы. Суть в том, что сборка должна быть подписана профайлом, в котором указан UUID устройств на которых она может быть установлена.

Процедура добавления/удаления устройства в Ad Hoc профайл требует его пересоздания. После того как профайл обновлен, он должен быть установлен на сборочный нод (компьютер на котором собирается сборка). Обычно процедура обновления профайла выполняется через Xcode, что требует доступ к сборочному ноду через VNC и непосредственного участия человека.

К счастью, все можно автоматизировать, в том числе и процесс обновления профайлов при запуске сборки.
Подробности
Всего голосов 25: ↑22 и ↓3+19
Комментарии6

Blur в iOS7

Время на прочтение2 мин
Количество просмотров31K
С седьмой версией iOS многие элементы UI стали выглядеть привлекательнее (см. Session 226, Implementing Engaging UI on iOS).

Например, теперь поп-оверы, большинство баров и алерты имеют размытый фон.



Что делать, если хочется добавить блюр в свой контрол, подскажет эта статья.
Читать дальше →
Всего голосов 64: ↑52 и ↓12+40
Комментарии25

Сетевое кэширование в iOS. Введение

Время на прочтение4 мин
Количество просмотров17K
Практически каждое мобильное приложение получает какие-либо данные из сети.
К сожалению, доступ к сети не всегда возможен и поэтому разработчику важно правильно реализовать сетевой кэш в приложении.

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

Итак, введение.
Читать дальше →
Всего голосов 21: ↑16 и ↓5+11
Комментарии33

Информация

В рейтинге
Не участвует
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность