「ブロックプログラミングのトピック」でこれを読みました
「ブロックを呼び出すたびに、その変数の新しいコピーが提供されます。これらの変数は、ブロック内に囲まれたブロックで const または参照変数として使用できます。」
だから、私は次のコードをテストしました。
// 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 です。
誰かがそれを理解するのを手伝ってくれますか?