четверг, 4 октября 2012 г.

Выстрелить в ногу на Objective-C

Поскольку Objective-C в корне своем - С, то можно просто выстрелить себе в ногу. Но это неинтересно.

Архитектурно задача выглядит следующим образом: объект класса "Пистолет" получает сообщение "сделатьВыстрелВ:" с параметром - объект класса "Нога".

Вспоминаем, что Нога не отвечает протоколу "ОбъектКоторыйМожетБытьЦельюВыстрела". Создаем протокол, прописываем реализацию обязательного метода "получилаВыстрел:".

Запускаем. Работает, но остается патрон на полу. Прибираемся. Вспоминаем времена до ARC, когда за уборкой каждого патрона приходилось следить самому. Ворчим на новое поколение стреляющих, которые не застали эти славные времена, поэтому управление патронами не понимают, в результате чего в случае появления патрона часто не знают, что делать вообще. 

Визуализируем. Для объектов создаем по несколько типов изображений: одно для iPhone, второе для iPhone с Retina-экраном, третье для нового iPhone c вытянутым экраном и еще одно для iPad. 

Следуя концепции MVC пишем контроллер - курок.

Портируем версию на Mac Os X (у всех классов интерфейса заменяем префикс UI на NS) . За время, пока мы пишем - выходит новое видео с WWDC, после просмотра которого оказывается, что в новой операционной системе есть библиотека выстрелов с картинками, методами и отличной документацией, а в разделе для разработчиков на сайте Apple есть проект-пример, в котором демонстрируется как выстрелить не только в ногу и не только себе. Плачем, потому что надо поддерживать iOS предыдущей версии. Видит око, да зуб неймет. Думаем, где взять время, чтобы посмотреть хотя бы половину роликов с новой конференции, когда еще с прошлой штук десять непросмотренных осталось.

Выходит новая операционная система и Xcode. Разработка замедляется - среда разработки явно работает медленнее, более требовательная операционная система подливает масла в огонь. Долгожданной функции вставки заголовков отсутствующих обязательных методов протокола в класс, который объявлен поддерживающим этот протокол все еще нет.

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

@end

Комментариев нет:

Отправить комментарий