Как правило, вы не хотите делить NSArrayController между кончиками. Вероятно, лучше иметь несколько NSArrayController (по одному на NIB), которые связаны с одной и той же базовой моделью. Если вы хотите, чтобы эта модель (например, NSArray) была глобальной для приложения, вы можете предоставить ее через делегат NSApplication (например, создать экземпляр своего собственного класса MyAppDelegate в MainMenu.nib и подключить выход delegate
NSApplication к экземпляру вашего класса MyAppDelegate) , В других NIB вы можете затем привязать привязку NSArrayController contentArray
к Shared Application.delegate.myArray
(при условии, что MyAppDelegate предоставляет - через KVC-совместимые методы - привязку NSArray, называемую myArray
). По сути, вы используете IB и MainMenu.nib для создания своего одиночного экземпляра MyAppDelegate.
Имейте в виду, что этот подход затрудняет модульное тестирование вашего приложения, поскольку в графе объектов теперь есть синглтоны, которые вы не можете смоделировать или заглушить во время тестирования. Было бы гораздо лучше создать NSWindowController или NSViewController для каждого вторичного (не MainMenu.nib) NIB и связать NSArrayController в этих кончиках с File Owner.myArray
. Затем вы можете создать экземпляр NSWindowController или NSViewController, передав ему массив (или массив, соответствующий KVC-объекту) перед загрузкой вторичного NIB. Таким образом, вы можете проверить функциональность перьев в отдельности (используя макет или заглушку для массива).