15

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

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

  • Начальная точка приложения является объектом AppDelegate, который после запуска, создает окно [Controller?] От наконечника вместе с настройкой его данных (от, например, CoreData)

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

  • Левая сторона splitview имеет NSTableView или NSOutlineView, который имеет стиль SourceList.

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

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

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

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

ответ

6

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

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

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

+0

Я, конечно, много думал, и я думаю, что это хорошо работает для моей ситуации. Я думаю, что каждый другой вид был бы достаточно разным, чтобы оправдать свой собственный наконечник, но опять же я не уверен. Когда я работал с iPhone, я редко пользовался интерфейсом InterfaceBuilder, однако, когда Bindings были настолько хорошо интегрированы в него, я думаю, что пришло время использовать его больше. Я также читал статьи Кэти, но это еще один буксир в другом направлении, отсюда и моя путаница в том, как все должно работать. – jbrennan

+0

Реальный вопрос заключается не в том, насколько различны представления, а в том, что вы используете для них - какие объекты модели вы будете вкладывать в них. Если в двух представлениях видны разные вещи, они должны быть разными, каждый со своим собственным наконечником. –

+0

Правильно, они будут разными перьями, потому что они показывают разные типы вещей. Как будет работать переключение ножей? Когда я выбираю другую строку в моем Sourcelist, как это запускает новый загружаемый nib? (Кроме того, следует ли загружать новый ViewController или просто менять вид с правой стороны?) – jbrennan

4

Один простой способ получить чувство для пути крупка дробятся, чтобы просто перейти в каталог Iphoto и начать открытие до крупку

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

+0

Я просматривал некоторые из своих перьев раньше, но многие из них старше. Приложения, написанные перед такими приятными вещами, как NSViewController, поэтому мне интересно, концептуально, как лучше всего их построить с учетом сегодняшней технологии. – jbrennan

+0

@cobbal Что вы подразумеваете под «начать открывать ножи?» Когда я просматриваю содержимое пакета приложения и буквально пытаюсь открыть его из Finder, это приводит к ошибке или не показывает многого. В нем говорится, что «скомпилированные нибы не могут быть открыты», когда я использую старый (3.2) Interface Builder или, наоборот, просто показываю огромную иконку в Xcode 4. – febeling

+0

@febeling вполне возможно, что эта информация устарела, но для меня Xcode (4.2) может открыть наконечники для iPhoto ('09). – cobbal

Смежные вопросы