当单击红色按钮关闭NSWindow或NSPanel时,它是否已从内存中完全删除?

时间:2011-03-23 22:08:21

标签: objective-c cocoa

我正在为初学者做一些Cocoa练习。提出这个问题是因为像iTunes这样的应用程序在单击红色按钮时并没有真正终止。我有一个NSPanel对象,选中“关闭时释放”选项。设置IBOutlet变量以使用IB指向NSPanel对象。当NSPanel对象被红色按钮关闭时,指针变量被委托方法指定为“nil”。当指针为“nil”时,用户可以再次加载NSPanel的nib文件(间接使用loadNibName)并重新显示该面板。

我的问题是:如果NSPanel对象在关闭时没有完全删除,那么当第二次加载NSPanel的nib文件时会浪费内存吗? (因为面板是一个“关于面板”,并且应该只显示一个这样的窗口。并且它的nib文件被加载两次......)

1 个答案:

答案 0 :(得分:0)

正如ughoavgfhw所指出的,选择“关闭时释放”选项将导致面板从内存中移除。所以我们不必担心多次加载nib文件。但我怀疑让面板在关闭时保持在内存中可以缩短响应时间,因为nib文件不需要重新加载。但是,它可能会导致一些额外的内存使用。实际上,在这种情况下,我的Mac mini 2.4 GHz Core 2 Duo的响应时间根本不是问题。即使每次都必须加载nib文件,about面板的显示时间也是即时的。这可能是iPhone上的问题......