2011-02-05 65 views
1

在一個循環中,我使用下面的代碼加載首選項窗口,如果用戶還沒有輸入他/她的設置。可能檢查筆尖是否已經加載?

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

我的問題是,每次循環運行的新窗口中打開一次又一次,直到,有沒有什麼辦法來檢查窗口或筆尖已被加載一次?

謝謝! :)

+0

可能的重複[如何防止如果已加載實例中加載一個筆尖?](http://stackoverflow.com/questions/4895286/how-to-prevent-a-nib-from-loading-if -already-在實例-被裝載) – 2011-02-05 23:56:37

回答

4

而不是微觀管理筆尖加載,你在做什麼,只是用NSWindowController的子類來處理偏好窗口。 NSWindowController爲您處理所有的筆尖管理,您只需撥打-showWindow:即可顯示窗口。 NSWindowController唯一真正的訣竅是確保您將筆記本身中的文件所有者的出口連接到了window

要實例化類,請使用傳入名稱爲nib的‑initWithWindowNibName:

正如Ief2提到的,你應該配置這個對象作爲一個單例。

1

也許你可以創建一個名爲PreferencesController的類,使該類在請求時加載筆尖,將窗口保存爲ivar。每次創建課程實例並激活它時,檢查窗口伊娃是否爲零。如果是,加載筆尖,否則只需製作窗口鍵並點擊前面。

除了存儲窗口,您還可以在用戶關閉窗口時對其進行監視。當他或她這樣做時,你可以釋放你的伊娃,並將其服務至零。現在當你再次請求時,你會看到你沒有窗口緩存,你將不得不重新加載筆尖。它雖然節省了內存。

它也可能建議做一個共享的類實例。由於我使用的是iPod touch,因此無法添加示例,但快速Google搜索應該非常有幫助。

希望它能幫助, ief2

編輯:下面的鏈接保存有關單身的例子:

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