Я новичок в программировании на Mac, и я работаю над документированным приложением.Избегайте соединения в приложении на основе какао на основе документов?
Подкласс NSDocument
создает подкласс NSWindowController
. Этот оконный контроллер создает два подкласса NSViewController.
Иногда изменение одного из видов NSViewController
должно содержать уведомление NSDocument
и/или основной класс модели. Кроме того, изменение модели должно быть уведомлено обо всех/некоторых представлениях.
Мой вопрос: что такое лучший подход, чтобы не было (или минимального) соединения? Я знаю, что есть несколько вариантов, но я не уверен, какой из них лучше всего подходит для моего приложения, как я новичок не в программировании, но и какао и особенно NSDocument
:
КВО. Выглядит хорошо и легко реализовать, но мне не нравится идея не указывать явным образом наблюдателя (ов) об изменении (AFAIK,
self.someProperty = newValue
делает автоматическое уведомление наблюдателей), и не нравится тот факт, что вам нужно зарегистрироваться к именам свойств, которые могут измениться во времени.Уведомления. Я знаю, что это такое, и я использовал их для iOS. Но я где-то читал, что они не могут быть немедленно отправлены наблюдателям. Это правда? Если нет, видите ли вы их как хороший подход для приложения на основе документов?
Делегаты. Да, в обычных условиях (или, что я обычно видел) класс имеет один делегат. Но создание массива делегатов также работает (просто протестировано). Проблема, которую я вижу здесь, заключается в том, что каждый раз, когда мне нужно уведомлять делегатов, я должен их перебирать, чтобы они отвечали на метод и вызывали этот метод.
Есть ли другие альтернативы, которые мне не хватает?
Уведомления * * немедленно отправляются наблюдателям. –