【发布时间】:2010-10-05 23:40:28
【问题描述】:
在 Apple 的 Singleton 示例文档中,我确实知道给猫剥皮的方法不止一种 - 但他们为什么要费心确保实例注册为静态?
我指的是:
静态 MyGizmoClass *sharedGizmoManager = nil;
【问题讨论】:
标签: c objective-c design-patterns singleton
在 Apple 的 Singleton 示例文档中,我确实知道给猫剥皮的方法不止一种 - 但他们为什么要费心确保实例注册为静态?
我指的是:
静态 MyGizmoClass *sharedGizmoManager = nil;
【问题讨论】:
标签: c objective-c design-patterns singleton
我相信这是因为无法从定义它的文件外部访问该变量。否则它将是全局可访问的。
这强制客户端必须使用 -(id)sharedObject 来访问单例。
【讨论】:
上面的答案是正确的。将单例的变量声明为静态意味着它只存在于包含它的文件的本地范围内,这正是您想要的。部分原因是这个单例模型依赖延迟加载在第一次使用时创建单例,部分原因是您不希望外部访问指针,这可能会丢失内存中的单例,或者允许另一个实例被创建,因此首先使整个事情变得毫无意义。
【讨论】: