在循环中,如果用户未输入他/她的设置,我将使用以下代码加载首选项窗口。
[NSBundle loadNibNamed:@"prefs" owner:self];
我的问题是,每次循环运行时,新窗口会一次又一次打开,直到有没有办法检查窗口或笔尖是否已经加载一次?
谢谢! :)
答案 0 :(得分:4)
不要像你一样微管理nib加载,只需使用NSWindowController
的子类来处理首选项窗口。 NSWindowController
为您处理所有笔尖管理,您只需要调用-showWindow:
来显示窗口。 NSWindowController
唯一真正的诀窍就是确保你在笔尖本身中连接文件所有者的window
出口。
要实例化该类,请使用‑initWithWindowNibName:
传递nib的名称。
正如Ief2所提到的,您应该将此对象配置为单例。
答案 1 :(得分:1)
也许你可以创建一个名为PreferencesController
的类,让该类在请求时加载nib,将窗口保存在ivar中。每次创建类的实例并激活它时,请检查窗口ivar是否为零。如果是,请加载笔尖,否则只需按下窗口键并按顺序排序。
除了存储窗口外,您还可以在用户关闭窗口时对其进行监控。当他或她这样做时,你可以释放你的伊娃并将其保持为零。现在当你再次请求它时,你会发现你没有窗口缓存,你将不得不重新加载笔尖。它可以节省内存。
也可以建议创建该类的共享实例。我不能包含样本,因为我在iPod touch上,但快速的Google搜索应该非常有用。
希望它有所帮助, ief2
编辑:下面的链接举例说明了单身人士: