Если у меня просто окно с элементами, которые не удаляются/не добавляются, следует ли обрабатывать все события и другие вещи в NSWindow или создавать NSViewController?Использовать NSWindow или NSViewController?
ответ
В целом вы должны попытаться обработать события в самом глубоком месте. Например, если ваше окно имеет NSButton, тогда эта кнопка должна взять на себя ответственность за обработку кликов на себя, а не на окно! Конечно, у NSButton есть API для этого, например setAction:
.
Есть некоторые виды, содержимое которых непрозрачно для Cocoa, где вы хотите взять на себя ответственность за отправку событий. Примером может служить NSOpenGLView, где вы визуализируете некоторую сцену и должны направлять события на компоненты в сцене. Совет по-прежнему применяется: переопределить обработчики событий в NSOpenGLView (mouseDown:
и т. Д.) И отправить оттуда.
Доступны методы более высокого уровня, такие как [NSWindow sendEvent]
. Уместно переопределить их, если вы хотите вмешаться в отправку событий для всего окна, например перенаправление событий в другие окна. В общем, это не обязательно, и делает ваше приложение более хрупким.
NSViewController играет уменьшенную роль на рабочем столе (по сравнению с UIKit) и редко требуется.
Вы можете использовать NSWindowController или NSViewController в зависимости от необходимости. Если вы настраиваете поведение окна, используйте только NSWindow.
С чем связано NSViewController? – RomaValcer
@ RomaValcer Этот [ответ] (http://stackoverflow.com/questions/5174871/should-i-use-an-nsviewcontroller-for-this) может вам помочь. – Raviprakash
Вы имеете в виду, что '@IBAction func button_pressed (отправитель: AnyObject)' является плохой практикой? – RomaValcer
Цели/действия, как правило, направлены на объекты в слое контроллера. NSWindowController и NSViewController - хорошие кандидаты. Я говорил конкретно о событиях, т. Е. NSEvent. –