【发布时间】:2014-03-15 22:13:52
【问题描述】:
我正在用 ObjectiveC 编写一个单例,并在我查看的许多站点中看到了这个实现。我真的不明白第一个 raw 中的 nil 分配。 由于dispatch_once中的块(以我的拙见......),这个方法如何返回先前分配的值(在块内)而不是nil。
+ (id)sharedManager {
static MyManager *sharedMyManager = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyManager = [[self alloc] init];
});
return sharedMyManager;
}
P.S - 我注意到这个问题在这里被问过一次,但没有得到解决,没有一个不发誓的人解释清楚 - Why is assigned a nil to singleton's static variable
【问题讨论】:
-
对相关问题的评论说:前者的优点是它可以工作,后者甚至无法编译。这个假装很清楚。
标签: objective-c design-patterns singleton