2011-02-05 59 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