该项目未启用ARC,但我们错误地使用符合ARC的代码库,具体来说是使用GCDSingleton.h定义的一个用于创建单例对象的代码库:
这似乎可以正常工作,即使共享对象使用了__strong限定符。我想知道为什么这不会导致错误或至少警告(最新的Xcode 4.6和iOS 6 SDK)。另外,由于该项目未启用ARC,如果有的话,__strong限定符到底是做什么的?
#define DEFINE_SHARED_INSTANCE
+ (id)sharedInstance
{
static dispatch_once_t pred = 0;
__strong static id _sharedObject = nil;
dispatch_once(&pred, ^{
_sharedObject = ^{return [[self alloc] init];}();
});
return _sharedObject;
}
这似乎可以正常工作,即使共享对象使用了__strong限定符。我想知道为什么这不会导致错误或至少警告(最新的Xcode 4.6和iOS 6 SDK)。另外,由于该项目未启用ARC,如果有的话,__strong限定符到底是做什么的?