在MainMenu.xib中添加NSObject会创建单个对象吗?

时间:2011-09-28 19:15:13

标签: objective-c macos cocoa cocoa-design-patterns

假设我有一个NSObject AppController:NSObject。使用IB,我将NSObject控件拖到MainMenu.xib中,并将该类指向AppController。由于MainMenu.xib被加载一次并且MainMenu.xib中的对象在应用程序的生命周期内都在内存中,它是否使AppController对象成为单例?

然后我可以将IBOutlet拖到AppDelegate来访问这个单例对象。这看起来很快。这是一种好习惯还是气馁?

我认为标准方法是在类中添加静态AppController * sharedInstance,并使用+(AppController *)sharedAppController进行访问。

1 个答案:

答案 0 :(得分:1)

不,它不是单身,因为没有什么能阻止你在代码中创建同一个类的另一个实例。

这只是创建单个实例的便捷方式。

  

和MainMenu.xib中的对象在应用程序生命周期的内存中

这不是真的。如果没有人保留这些对象(或者在GC下对它们有强烈的引用),它们将被取消分配。这是真的。请参阅下面的Peter Hosey的评论。