让我说我有一个NSObject的AppController:NSObject。使用IB,我将一个NSObject控件拖到MainMenu.xib中,并将该类指向AppController。由于MainMenu.xib只加载一次,并且MainMenu.xib中的对象在应用程序的整个生命周期中都处于内存中,它是否使AppController对象成为单例?在MainMenu.xib中添加一个NSObject是否会创建一个单例对象?
然后我可以拖动一个IBOutlet到AppDelegate来访问这个单例对象。这看起来很快捷。这是一种好的做法还是令人灰心?
我认为标准方法是在类中添加一个静态AppController * sharedInstance并使用+(AppController *)sharedAppController进行访问。
感谢您澄清我的误解。 – jemeshsu
“这是不正确的。如果没有人保留这些对象(或者在GC下有强烈的引用),他们将被释放。“在Mac上,这是不正确的。如果没有人释放这些对象(当不在GC下)时,它们将被释放。 AppKit代表文件所有者保留顶级对象:http://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/LoadingResources/CocoaNibs/CocoaNibs.html#//apple_ref/doc/uid/10000051i -CH4-SW6 MainMenu的文件所有者是NSApplication对象。在iOS上,你是对的;所有对象都必须保留一些东西才能保持活力。 –
感谢纠正,彼得。我纠正了我的答案。 –