我有一个单身人士,我想在一个块内捕获它。我知道变量保留在块内部,因为传递的对象的常量拷贝被创建,并且除非使用该对象的弱实例,否则永远不会解除分配。我的好奇心是相同的行为是否适用于静态分配的变量。 这里是我的代码(self是类的sharedInstance):单块是否在块内创建保留循环?
+ (Class *)sharedInstance
{
static Class *sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[Class alloc] init];
});
return sharedInstance;
}
[self setBlock:^(NSArray *array)
{
self.property = [array firstObject];
}];
这不是_exactly_块如何工作,但是,同样的行为适用于您的单身人士作为任何其他对象。 – CrimsonChris 2014-11-06 18:52:09
在块内使用对象引用时,_reference_被复制,它将ARC添加到引用计数的+1(当引用强时)。它并不复制对象本身。复制弱引用不会增加引用计数。 – CrimsonChris 2014-11-06 18:54:44
我明白了。非常好的答案。欣赏它。谢谢! – 2014-11-06 18:58:02