29 May 2016

Пару слов про разработку под OS X

Волею судеб довелось малость хлебнуть девелопмента на Objective-C под эти ваши маки. Swift, к сожалению, опцией не был, т.к. написанное надо было интегрировать с плюсовым кодом. Поэтому -- только Objective-C++, только хардкор.

Что имею сказать.

#1. Блоки. Штука, конечно, неоднозначная (ибо с их помощью можно довольно легко отстрелить себе ногу или оттяпать пару лишних пальцев на руке), но в случае, вам надо писать на плюсах, с нее есть немалый профит -- возможность вообще отказаться от порождения своих Objective-C классов, т.к. используя блоки вам не нужно предоставлять селекторы для колбеков.
Выгода очевидна -- чем больше кода вы пишите на плюсах, а не на недоразумении под названием Obj-C, тем лучше.

#2. С документацией жопа полная. А в связке с шизофреническим поведением, когда deprecated объявляются части API, которым и года не исполнилось, этот момент сильно печалит.
Даже если вам крупно повезет, и вы найдете официальный guide для нужного вам API, есть весьма высокие шансы, что он уже протух чуть больше, чем полностью.
Конечно, гугл и stack overflow никто не отменял, но в ситуации, когда вокруг тебя буквально каждый второй чувак считает себя крутым разработчиком мобильных приложений, а сам буквально еще вчера лепил на коленке говносайты на PHP, информацию из неофициальных источников надо черпать с должным уровнем паранойи.

#3. Просто какой-то запредельный уровень забагованности.
Я макнулся только в одну очень маленькую область -- EventKit Framework, но даже на таком маленьком пяточке обнаружились совершенно зверские баги.
Например -- запрос списка событий через eventsMatchingPredicate с полностью одинаковым предикатом может давать разные результаты (в хранилище событий при этом, разумеется, никто ничего не пишет).
Другой пример -- размножение нотификаций об изменениях в хранилище событий, если вдруг вы решили пересоздавать экземпляр EKEventStore.
Или еще -- коллизия UID для событий, т.е. в одном календаре могут оказаться несколько разных событий имеющих один и тот же UID! Правда, замечательно?

Мораль? Морали не будет. Яблочные продукты делают такие же криворукие индусы, как и весь остальной software вокруг вас.
Принцессы гадят, причем, иногда даже не успевая добежать до ближайшего сортира.