我正在Objective-C中实现教科书单例:
+ (instancetype) sharedSingleton
{
id sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init];
});
return sharedInstance;
}
......正如我一直在做的那样。将旧的@synchronized
- 语法单例更改为此类时,在旧项目中(在最新版本的Xcode中打开),我收到错误:
Variable is not assignable (missing __block type specifier)
......指着分配线。我在其他代码的许多部分都有完全相同的代码,使用相同的环境构建和运行,从来没有问题......发生了什么?我应该在__block
限定符之前加上它并完成它,还是在这里有更多的目标?
我唯一能想到的是,我现在正在进行现代化的旧项目 NOT 已过渡到ARC ......(还)
答案 0 :(得分:4)
static
变量上缺少sharedInstance
。那条线应该是
static id sharedInstance = nil;
Colin Wheelas a good and short article about how to create singeltons using dispatch_once。