Спасибо за мысль, интересное направление. Но с наскока не получается — в вашем варианте переменная все равно почему-то отдается nil. И также неприменимо, видимо, для свойств типа storeCoordinator — компилятор выдает ошибку вида «lazy attribute may not be sed in computed property».
Нет, вы абсолютно правы — этого можно и не писать. Лично мне это немного облегчает читаемость кода при его быстром просмотре — когда ты явно видишь тип в начале строки, а не в конце. При работе на маленьком мониторе или при 3-4 уровне вложенности метода/цикла/ветвления — строка уже становится трудночитаемой быстрым взглядом.
А про лаконичность все-таки не смогу полностью согласиться — кодогенерация в Objective-C мне вполне нравилась. Делала ровно то, что требовалось от ORM. Думаю здесь тоже допилят, в противном случае буду использовать старые механизмы.
Мы у себя в процессе работы делаем такую штуку как «дизайн-документ», простая таблица из полей «описание картинки», «размер», «название», «статус готовности». Составляется он после утверждения эскизов, в результате:
— все сразу видят весь требуемый объем работ
— дизайнер, в случае если указаны приоритеты дополнительно, знает в каком порядке работать
— программист заранее знает какие они получит картинки — их названия и размеры
— руководитель видеть прогресс по процессу обработки задачи
Постепенно он уже становится меньше нужен этот документ, так как привычка к правильному именованию файлов всем прививается.
Да, мы над ними тоже сейчас работаем немного — планируем делать полный редизайн со следующим апдейтом.
Приложения сейчас довольно простые:
— первое предоставляет информацию по актуальным курсам валют и позволяет их перегонять друг в друга. В скором времени будет обвязано с нашим новым серверным роботом и станет куда вкуснее)
— второе, приложение для «коллекционеров». Позволяет хранить оцифрованные версии ваших коллекций, и в следующем мажорном апдейте будет обвязано с социальными сетями, в минорном пока есть много работы над юзабилити
Хороший пост, у нас кстати недавно была тоже проблема при переходе на 5 версию оси.
Проблема была следующего характера — в одном из контролов в навигационной панели висела сегментированная вьюшка, переключение которой приводило к некоторым действиям в логике приложения. Соответственно на переключение его значения был подвешен таргет, и перед самым началом работы приложения контролу задавалось текущее значение выбранного сегмента, чтобы сделать преднастройку параметров приложения. Выглядело это грубо говоря следующим образом:
Так вот, на четверке этот код замечательно работает, а на 5 оси вызов сообщения @selector(setSelectedSegmentIndex:) перестал приводить к вызову привязанного таргета. Лечили тупым вызовом самого привязанного селектора, дописав такую строчку: [self controlChanged];
— все сразу видят весь требуемый объем работ
— дизайнер, в случае если указаны приоритеты дополнительно, знает в каком порядке работать
— программист заранее знает какие они получит картинки — их названия и размеры
— руководитель видеть прогресс по процессу обработки задачи
Постепенно он уже становится меньше нужен этот документ, так как привычка к правильному именованию файлов всем прививается.
Приложения сейчас довольно простые:
— первое предоставляет информацию по актуальным курсам валют и позволяет их перегонять друг в друга. В скором времени будет обвязано с нашим новым серверным роботом и станет куда вкуснее)
— второе, приложение для «коллекционеров». Позволяет хранить оцифрованные версии ваших коллекций, и в следующем мажорном апдейте будет обвязано с социальными сетями, в минорном пока есть много работы над юзабилити
Проблема была следующего характера — в одном из контролов в навигационной панели висела сегментированная вьюшка, переключение которой приводило к некоторым действиям в логике приложения. Соответственно на переключение его значения был подвешен таргет, и перед самым началом работы приложения контролу задавалось текущее значение выбранного сегмента, чтобы сделать преднастройку параметров приложения. Выглядело это грубо говоря следующим образом:
UISegmentedControl* control = [[UISegmentedControl alloc] initWithItems:[NSArray arrayWithObjects:@"First", @"Second", nil]];
[control addTarget:self action:@selector(controlChanged) forControlEvents:UIControlEventValueChanged];
[control setSelectedSegmentIndex:1];
Так вот, на четверке этот код замечательно работает, а на 5 оси вызов сообщения @selector(setSelectedSegmentIndex:) перестал приводить к вызову привязанного таргета. Лечили тупым вызовом самого привязанного селектора, дописав такую строчку:
[self controlChanged];