我在“块编程主题”中读过这个
“块的每次调用都会提供该变量的新副本。这些变量又可以用作包含在块中的块中的常量或引用变量。”
所以,我测试了以下代码。
// Employee.h
@interface Employee : NSObject
@end
// Employee.m
@implement Employee
@end
// main.m
int main() {
NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
Employee* john = [[Employee alloc] init] autorelease];
void (^blockTest)(void) = ^ {
NSLog(@"john = %@", john);
NSLog(@"john retain count = %ld", [john retainCount]);
};
blockTest();
[pool drain];
return 0;
}
我预计执行 blockTest 时“John”保留计数将为 2,但结果为 1。
谁能帮我理解它?