【发布时间】:2010-09-13 19:04:53
【问题描述】:
我的单例访问器方法通常是以下几种变体:
static MyClass *gInstance = NULL;
+ (MyClass *)instance
{
@synchronized(self)
{
if (gInstance == NULL)
gInstance = [[self alloc] init];
}
return(gInstance);
}
我可以做些什么来改善这一点?
【问题讨论】:
-
你所拥有的很好,尽管你可以将全局变量声明移动到你的 +instance 方法中(唯一需要使用它的地方,除非你也允许它被设置)和为您的方法使用像 +defaultMyClass 或 +sharedMyClass 这样的名称。 +instance 没有意图揭示。
-
由于这个问题的“答案”不太可能很快改变,我将历史锁定在这个问题上。两个原因 1) 很多观点、投票和好的内容 2) 防止开/关的溜溜球。这在当时是一个很好的问题,但这些类型的问题不适合 Stack Overflow。我们现在有Code Review 用于检查工作代码。请将此问题的所有讨论发送至this meta question。
标签: objective-c design-patterns singleton object-initializers