I‘m testing block retainCount for object var.
__block Person *person = [[Person alloc] init];
NSLog(@"Block前person的引用计数%ld, 地址%@,指针:%p", CFGetRetainCount((__bridge CFTypeRef)person), person, &person);
void (^myBlock)(void) = ^{
person.name = @"Nature";
NSLog(@"Block中person的引用计数%ld, 地址是%@, 指针: %p", CFGetRetainCount((__bridge CFTypeRef)person), person, &person);
};
myBlock();
NSLog(@"Block后person的引用计数%ld", CFGetRetainCount((__bridge CFTypeRef)person));
The retainCount is 1. When remove __block, the output is 3!
Can anyone explain why is 1 with __block, and is 3 without __block.
Thank you!