【问题标题】:Objective-C Singleton instance as a static?Objective-C Singleton 实例作为静态?
【发布时间】:2010-10-05 23:40:28
【问题描述】:

在 Apple 的 Singleton 示例文档中,我确实知道给猫剥皮的方法不止一种 - 但他们为什么要费心确保实例注册为静态?

取自:http://developer.apple.com/documentation/Cocoa/Conceptual/CocoaFundamentals/CocoaObjects/chapter_3_section_10.html

我指的是:

静态 MyGizmoClass *sharedGizmoManager = nil;

【问题讨论】:

标签: c objective-c design-patterns singleton


【解决方案1】:

我相信这是因为无法从定义它的文件外部访问该变量。否则它将是全局可访问的。

这强制客户端必须使用 -(id)sharedObject 来访问单例。

【讨论】:

  • 我在多个文件/模块中以类似的方式使用单例。它不会给我访问它带来任何问题。
  • 你是在.h还是.m文件中声明的?在 .m(它应该在的地方)中不应该是这种情况。
【解决方案2】:

上面的答案是正确的。将单例的变量声明为静态意味着它只存在于包含它的文件的本地范围内,这正是您想要的。部分原因是这个单例模型依赖延迟加载在第一次使用时创建单例,部分原因是您不希望外部访问指针,这可能会丢失内存中的单例,或者允许另一个实例被创建,因此首先使整个事情变得毫无意义。

【讨论】:

    猜你喜欢
    • 2010-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多