1

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

然后我可以将一个 IBOutlet 拖到 AppDelegate 来访问这个单例对象。这看起来是一种快速的方法。这是一个好的做法还是应该气馁?

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

4

1 回答 1

1

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

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

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

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

于 2011-09-28T19:18:19.713 回答