假设我有一个 NSObject AppController:NSObject。使用 IB,我将 NSObject 控件拖到 MainMenu.xib 中并将该类指向 AppController。由于 MainMenu.xib 加载一次,并且 MainMenu.xib 内的对象在应用程序的整个生命周期中都在内存中,因此它是否会使 AppController 对象成为单例?
然后我可以将 IBOutlet 拖到 AppDelegate 来访问这个单例对象。这看起来是一个快速的方法。这是一个好的做法还是值得劝阻?
我认为的标准方法是在类中添加一个静态 AppController *sharedInstance 并使用 +(AppController *)sharedAppController 进行访问。
最佳答案
不,它不是单例,因为没有什么可以阻止您在代码中创建同一类的另一个实例。
这只是创建单个实例的便捷方法。
and objects inside MainMenu.xib are in memory for the life of the app
这不是真的。如果没有人保留这些对象(或在 GC 下持有对它们的强引用),它们将被释放。 这是事实。请参阅下面 Peter Hosey 的评论。
关于objective-c - 将 NSObject 添加到 MainMenu.xib 中是否会创建单例对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7588359/