将 NSObject 添加到 MainMenu.xib 中是否会创建单例对象?

发布于 2024-12-07 14:35:59 字数 372 浏览 0 评论 0原文

假设我有一个 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

烏雲後面有陽光 2024-12-14 14:36:00

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

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

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

这不是真的。如果没有人保留这些对象(或在 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.

and objects inside MainMenu.xib are in memory for the life of the app

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文