Cocoa архитектура приложения в Mac OS X

Я возвращаюсь к разработке Cocoa на Mac после длительного пребывания в iPhone. Мой предыдущий опыт работы с Cocoa на Mac был просто небольшим инструментом. Я ищу что-то серьезное.

Глядя на современное приложение Cocoa, такое как iPhoto (или Mail или Things or....), многие приложения используют подход Single-Window, Source-List. Я пытаюсь оборачивать голову так, как только могу, потому что это, кажется, дает хороший опыт. Однако у меня небольшие проблемы. Здесь, как я думаю, это должно выглядеть, но мне интересно, как это делают другие, и что действительно лучший способ:

  • Отправной точкой приложения является объект AppDelegate, который после запуска создает окно-контроллер из элемента управления, а также настраивает его данные (от, например, CoreData).

  • WindowController загружает окно, в котором по существу имеется только NSSplitView.

  • В левой части splitview есть NSTableView или NSOutlineView, для которых установлен стиль SourceList.

  • На правой стороне есть основное содержимое приложения, в зависимости от выбранного элемента представления таблицы.

Я бы предположил, что где-то (где?) есть NSViewControllers, управляющие каждым из разных представлений, которые появятся в правой части (подумайте, как у iPhoto есть все фотографии, события, лица, места и т.д., и я думаю, они все могли появиться в разных норах... это правильно?).

Эти контроллеры представлений, вероятно, связаны с исходным списком слева.. как это работает (исходный список поддерживается NSArrayController NSViewControllers, возможно?).

Во всяком случае, это мои мысли, я полностью вне базы или...? Я просмотрел веб-сайт, нашел этот пост здесь, и я посмотрел на какой-то исходный код Apple, но, похоже, моя голова вокруг него. Любые рекомендации приветствуются.

Ответы

Ответ 1

Прерывание взглядов на отдельные наконечники в основном хорош, если вы собираетесь менять некоторые взгляды для других, так как вы можете загружать их лениво. И да, в современном приложении вы бы использовали NSViewController или, возможно, KTViewController из KTUIKit (см. сообщения, которые она написала в соавторстве о NSViewController)

Не просто бегите в руки исходного списка. Интерфейс с одним окном может быть полезен для простых приложений, но он может быстро стать громоздким, когда у вас много чего происходит, поскольку их лучше обслуживать, разбивая их на отдельные окна; iTunes и Xcode предоставляют множество примеров этого (особенно последнее, поскольку вы можете переключать его между SWI и MWI).

Вам нужно подумать о том, будет ли интерфейс с несколькими окнами или одним окном лучше для вашего приложения. Нет ни одного ответа для всех приложений; он полностью зависит от вашего приложения и того, что вы хотите, и как вы хотите, чтобы он выглядел - вы (и остальная часть своей команды, если таковая имеется), могут ответить только на этот вопрос. Вы можете сделать некоторые прототипы бумаги, чтобы делать быстрые эксперименты в каждом направлении, чтобы вы могли удерживать хотя бы поддельные примеры обоих пользовательских интерфейсов друг против друга.

Ответ 2

Один простой способ почувствовать, как скрещиваются ножи, - просто зайти в каталог iPhoto и начать открывать nibs

Если вы хотите изучить немного больше в структуре класса, вы можете попробовать обозревать, используя F- Script