Когда вы рекомендуете интегрировать настраиваемое представление в Interface Builder с помощью подключаемого модуля? Просматривая Apple Руководство по программированию подключаемого модуля Interface Builder, я обнаружил:
- Are your custom objects going to be used by only one application?
- Do your custom objects rely on state information found only in your application?
- Would it be problematic to encapsulate your custom views in a standalone library or framework?
If you answered yes to any of the preceding questions, your objects may not be good candidates for a plug-in.
Это отвечает на некоторые из моих вопросов, но мне все равно хотелось бы узнать ваше мнение о том, когда это будет хорошей идеей. В чем заключаются преимущества и насколько велики затраты времени?
Я думаю, что рекомендации Apple хорошо резюмируют это.
Если вы пишете элемент управления, который будет использоваться в нескольких приложениях и является полностью универсальным, то создание настраиваемого объекта - хорошая идея. Вы сможете визуализировать внешний вид и установить свойства непосредственно из Интерфейсного разработчика.
Если ваш контроль ограничен одним приложением или тесно связан с вашими данными, то перенос его в настраиваемый объект действительно не принесет вам многого.
Создать собственное представление несложно, существует множество простых руководств.
Совершенно разумно вынести классы представления и контроллера, которые использует ваше приложение, в отдельную структуру, встроенную в оболочку вашего приложения, для которой вы также создаете подключаемый модуль Interface Builder.
Среди других причин классы, которые обычно используются в вашем приложении, могут быть затем настроены в точке их использования в Интерфейсном Разработчике, а не в разрозненных реализациях -awakeFromNib
. Это также единственный способ сделать так, чтобы ваши объекты отображали привязки, которые можно настроить в Интерфейсном Разработчике.
Это немного кода, но для классов представлений и контроллеров, которые используются более чем в одном месте и которые требуют дополнительной настройки, прежде чем они будут фактически использованы, вы, вероятно, сэкономите кучу времени в целом. И ваш опыт разработки с вашим собственным контроллером и классами представлений будет похож на разработку с использованием Cocoa.
Я согласен. Но я бы добавил классы представления непосредственно в целевое приложение, а не в отдельную платформу, даже если она встроена в пакет приложения.