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

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

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

Оптимизируем работу SQLite с NSCalendar

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


В предыдущей статье мы решили проблему некорректного использования SQLite week based calendar, написав свое расширение для этой СУБД.

Наш расчет сошелся, однако скорость его работы оставляла желать лучшего. Обработка таблицы, содержащей всего лишь 2500 записей занимала около 6 секунд. В то время как запросы, использующие strftime() исполнялись за десятые доли секунды.
Так чего же мы не учли?
Всего голосов 11: ↑9 и ↓2+7
Комментарии0

Учим SQLite работать с локализированным календарем

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

Учим  SQLite работать с локализированным календарем



Часть1 — Английская версия, Часть2



Недавно мне довелось портировать (точнее, переписывать) под iOS приложение для анализа посещаемости сайта. Поскольку данные подходили под реляционную модель, мы решили использовать SQLite. Насколько я знаю, других реляционных СУБД под iOS просто нет.

Долго ли, коротко ли… Пришло время подсчитать понедельный КПД для определенного диапазона дат.
Что же произошло дальше?
Всего голосов 15: ↑14 и ↓1+13
Комментарии12

О блоках и их использовании в Objective-C часть 3-ая

Время на прочтение12 мин
Количество просмотров4.5K
Так же как и в топике — «О блоках и их использовании в Objective-C часть 2-ая», мы продолжим говорить о преимуществах использования блоков на живых примерах.
Здесь мы рассмотрим удобства использования блоков при управлении последовательностью операций.

5. UIView анимации, последовательность анимаций.

Для начала напишем простенький пример, в котором мы будем двигать кнопку с помощью анимаций(без блоков). Затем поменяем порядок анимаций чтобы посмотреть, какие изменения потребуются в коде.
Читать дальше →
Всего голосов 12: ↑12 и ↓0+12
Комментарии9

О блоках и их использовании в Objective-C часть 2-ая

Время на прочтение9 мин
Количество просмотров9.3K
Продолжение топика — О блоках и их использовании в Objective-C часть 1-ая.

Многие из тех кто впервые сталкивается с блоками (или замыканиями), задают вопрос — «а зачем? Если и без них можно». Да можно. Но использование блоков имеет не мало преимуществ, и первое из них — существенная экономия на количестве кода, а следовательно и на времени написания и поддержке. Дальше буду говорить примерами.

Содержание:


1. Работа с контейнерами на примере NSArray.
2. Guards на примере UITableView.
3. Использование блоков вместо классов на примере scheduled операций.
4. Блоки вместо делегатов в UIAlertView.
5. UIView анимации, последовательность анимаций.
6. Асинхронные операции и управление ими. Переписываем пример с анимациями.
Читать дальше →
Всего голосов 36: ↑32 и ↓4+28
Комментарии21

О блоках и их использовании в Objective-C часть 1-ая

Время на прочтение4 мин
Количество просмотров32K
В OS X 10.6 и iOS 4.0 компания Apple анонсировала поддержку блоков, по сути являющиx собою замыкания. Дальше о блоках в контексте разработки под IOS, Objective-C (тоесть работа без gc).
Для использования блоков IOS ver. < 4.0 можно применить ESBlockRuntime или PLBlocks.

Кратко о теории


Экземпляр блока, тип блока и сам блоковый литерал обозначаются с помощью оператора ^, пример:

typedef int (^MyBlock)(int);

int multiplier = 7;
MyBlock myBlock = ^(int num) {
 return num * multiplier;
};


* This source code was highlighted with Source Code Highlighter.

или

int multiplier = 7;
int (^myBlock)(int) = ^(int num) {
  return num * multiplier;
};


* This source code was highlighted with Source Code Highlighter.

Вызов блока аналогичен вызову обычной сишной функции. Например, так:

myBlock( 3 )

* This source code was highlighted with Source Code Highlighter.

Главной особенностью блоков является их умение хранить контекст в котором они создавались. В примере выше «myBlock» всегда будет умножать число на 7. Как же это все работает?
Читать дальше →
Всего голосов 16: ↑12 и ↓4+8
Комментарии12

Используем блоки в IOS < 4.0

Время на прочтение1 мин
Количество просмотров1.1K
Для тех кто знаком с блоками в Objective-C, но не может пока их использовать в силу необходимости поддержки приложений для ios младше 4.0 версии, либо сторонится патченого компилера PLBlocks, предлагаю рантайм блоков в виде статической либы libESBlocksRuntime.a

Сам рантайм был выдернут с исходников проекта compiler-rt, и завернут в блоковые классы ESBlock. Добавлены недостающие методы -[ NSArray enumerateObjectsUsingBlock: ] и т.д. также UIView блоковые екстеншены.

Для подключения в проект достаточно скачать исходники проекта, и добавить его в dependencies например так.

Вопросы и предложения пишите в личку — с радостью отвечу каждому заинтересовавшемуся.

Здесь можно почитать о терии блоков на хабре.
Всего голосов 28: ↑23 и ↓5+18
Комментарии14

Информация

В рейтинге
Не участвует
Откуда
Днепр, Днепропетровская обл., Украина
Дата рождения
Зарегистрирован
Активность