Objective c 是否可以检查nib是否已加载?
在一个循环中,如果用户没有输入他/她的设置,我将使用以下代码加载preferences窗口Objective c 是否可以检查nib是否已加载?,objective-c,cocoa,macos,Objective C,Cocoa,Macos,在一个循环中,如果用户没有输入他/她的设置,我将使用以下代码加载preferences窗口 [NSBundle loadNibNamed:@"prefs" owner:self]; 我的问题是,每次循环运行时,一个新窗口会一次又一次地打开,直到,有没有办法检查窗口或nib是否已经加载过一次 谢谢!:) 也许您可以创建一个名为PreferencesController的类,让该类在请求时加载nib,将窗口保存在ivar中。每次创建类的实例并激活它时,检查窗口ivar是否为nil。如果是,请加载笔
[NSBundle loadNibNamed:@"prefs" owner:self];
我的问题是,每次循环运行时,一个新窗口会一次又一次地打开,直到,有没有办法检查窗口或nib是否已经加载过一次
谢谢!:) 也许您可以创建一个名为
PreferencesController
的类,让该类在请求时加载nib,将窗口保存在ivar中。每次创建类的实例并激活它时,检查窗口ivar是否为nil。如果是,请加载笔尖,否则只需按窗口键并在前面订购即可
除了存储窗口外,您还可以在用户关闭窗口时监视它。当他或她这样做时,您可以释放您的ivar并将其设置为零。现在,当您再次请求它时,您将看到没有缓存窗口,您必须重新加载nib。不过它可以节省内存
也可以建议创建该类的共享实例。我不能包括一个例子,因为我在我的iPodtouch上,但快速的谷歌搜索应该是非常有用的
希望有帮助,
ief2
编辑:下面的链接包含一个关于单身的示例:
也许您可以创建一个名为
PreferencesController
的类,让该类在请求时加载nib,将窗口保存在ivar中。每次创建类的实例并激活它时,检查窗口ivar是否为nil。如果是,请加载笔尖,否则只需按窗口键并在前面订购即可
除了存储窗口外,您还可以在用户关闭窗口时监视它。当他或她这样做时,您可以释放您的ivar并将其设置为零。现在,当您再次请求它时,您将看到没有缓存窗口,您必须重新加载nib。不过它可以节省内存
也可以建议创建该类的共享实例。我不能包括一个例子,因为我在我的iPodtouch上,但快速的谷歌搜索应该是非常有用的
希望有帮助,
ief2
编辑:下面的链接包含一个关于单身的示例:
不要像现在这样对nib加载进行微观管理,只需使用
NSWindowController
的子类来处理preferences窗口NSWindowController
为您处理所有nib管理,您只需调用-showWindow:
即可显示窗口。NSWindowController
的唯一真正诀窍是确保将文件所有者的窗口连接到nib本身
要实例化该类,请使用-initWithWindowNibName:
传入nib的名称
正如Ief2所提到的,您应该将此对象配置为作为单例。而不是像您这样对nib加载进行微观管理,只需使用NSWindowController
的子类来处理preferences窗口NSWindowController
为您处理所有nib管理,您只需调用-showWindow:
即可显示窗口。NSWindowController
的唯一真正诀窍是确保将文件所有者的窗口连接到nib本身
要实例化该类,请使用-initWithWindowNibName:
传入nib的名称
正如Ief2所提到的,您应该将此对象配置为作为单例。的可能重复项的可能重复项