Я делал что-то похожее совсем недавно, и мне пока что везет. Я создаю стандартный подкласс NSObject (MYUserDefaults для аргумента). У него есть свойства для того, что я хочу (хост, имя пользователя и т. Д.). Некоторые переходят в NSUserDefaults, другие - в связку ключей или тому подобное. Он имеет стандартный +sharedUserDefaults
метод синглтона. (*)
В владельце окна (NSWindowController или AppDelegate) я предоставляю -sharedUserDefaults
. Затем я привязываю это к нужным настройкам с помощью простого пути к ключу (sharedUserDefaults.host). Обычно я не использую ключевые пути в привязках, потому что они часто запутывают вещи, но здесь я думаю, что все проясняется, принимая во внимание особый случай, когда нужно предотвратить создание дополнительной не-синглтоновой версии NIB.
(*) Ничего необычного " принудительный синглтон " (что также может решить вашу проблему). Я единственный, кто думает, что у Apple должна быть большая мигающая надпись «не используйте это, если вы не знаете, зачем она вам нужна, и не используйте ее в любом случае» на этом документе? Я нахожу этот код опасным для неопытных разработчиков. Половина объектов в последнем проекте, над которым я работал, была перегружена +allocWithZone:
. Для меня это просто плохая форма - звонить +alloc
и получать указатели на существующие объекты. Не ври мне, если это не является абсолютно необходимым.