我有一個單身人士,我想在一個塊內捕獲它。我知道變量保留在塊內部,因爲傳遞的對象的常量拷貝被創建,並且除非使用該對象的弱實例,否則永遠不會解除分配。我的好奇心是相同的行爲是否適用於靜態分配的變量。 這裏是我的代碼(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