Можно проверить, если перо уже загружено? - PullRequest
1 голос
/ 06 февраля 2011

В цикле я использую следующий код для загрузки окна настроек, если пользователь не ввел свои настройки.

[NSBundle loadNibNamed:@"prefs" owner:self];

Моя проблема в том, что каждый раз, когда цикл запускается, новое окно открывается снова и снова до тех пор, пока есть ли способ проверить, загружено ли окно или перо уже один раз?

Спасибо! :)

Ответы [ 2 ]

4 голосов
/ 06 февраля 2011

Вместо микроуправления загрузкой пера, как вы делаете, просто используйте подкласс NSWindowController для обработки окна настроек. NSWindowController обрабатывает все управление пером для вас, вам просто нужно позвонить -showWindow:, чтобы отобразить окно. Единственный реальный трюк с NSWindowController состоит в том, чтобы убедиться, что вы подключили window выход Владельца файла к самому наконечнику.

Чтобы создать экземпляр класса, используйте ‑initWithWindowNibName:, передавая имя пера.

Как упоминалось в Ief2, вы должны настроить этот объект так, чтобы он действовал как одноэлементный.

1 голос
/ 06 февраля 2011

Может быть, вы можете создать класс с именем PreferencesController, заставить этот класс загружать перо по запросу, сохранить окно в ivar. Каждый раз, когда вы создаете экземпляр класса и активируете его, проверяйте, является ли окно ivar нулевым. Если это так, загрузите перо, в противном случае просто сделайте ключ окна и закажите передний план.

Помимо сохранения окна, вы также можете отслеживать, когда пользователь закрывает его. Когда он или она это сделает, вы можете выпустить свой ивар и довести его до нуля. Теперь, когда вы запросите его снова, вы увидите, что у вас нет кэшированного окна, и вам придется перезагрузить перо. Это сохраняет память, хотя.

Также можно посоветовать сделать общий экземпляр класса. Я не могу включить образец, потому что я нахожусь на моем iPod touch, но быстрый поиск Google должен быть действительно полезным.

Надеюсь, это поможет, ief2

РЕДАКТИРОВАТЬ: ссылка ниже содержит пример о синглетонах:

http://eschatologist.net/blog/?p=178

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...