将 NSObject 添加到 MainMenu.xib 中是否会创建单例对象?
假设我有一个 NSObject AppController:NSObject。使用 IB,我将 NSObject 控件拖到 MainMenu.xib 中并将该类指向 AppController。由于 MainMenu.xib 加载一次并且 MainMenu.xib 内的对象在应用程序的生命周期中都在内存中,因此它是否使 AppController 对象成为单例?
然后我可以将 IBOutlet 拖到 AppDelegate 来访问这个单例对象。这看起来是一个快速的方法。这是一个好的做法还是值得劝阻?
我认为的标准方法是在类中添加一个静态 AppController *sharedInstance 并使用 +(AppController *)sharedAppController 进行访问。
Let say I have a NSObject AppController:NSObject. Using IB, I drag an NSObject control into MainMenu.xib and points the class to AppController. Since MainMenu.xib is loaded once and objects inside MainMenu.xib are in memory for the life of the app, does it make the AppController object a singleton?
Then I can drag an IBOutlet to AppDelegate to access this singleton object. This looks like a quick way. Is this a good practice or to be discouraged?
The standard method I supposed is to add a static AppController *sharedInstance inside the class and use a +(AppController *)sharedAppController for access.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,它不是单例,因为没有什么可以阻止您在代码中创建同一类的另一个实例。
这只是创建单个实例的便捷方法。
这不是真的。如果没有人保留这些对象(或在 GC 下持有对它们的强引用),它们将被释放。这是事实。请参阅下面 Peter Hosey 的评论。No, it's not a singleton because nothing stops you from creating another instance of the same class in code.
It's just a convenient way to create a single instance.
This is not true. If nobody retains these objects (or holds a strong reference to them under GC), they will get deallocated.This is true. See Peter Hosey's comment below.