私のコードを確認してください:
@interface ClassA : NSObject {
ClassB *objB;
}
@property (retain) ClassB *objB;
@end
@implementation ClassA:
@synthesiaze objB;
@end
int Main(int argc, const char *argv[])
{
ClassA *objA = [[ClassA alloc] init];
ClassB *objB = [[ClassB alloc] init];
NSLog(@"%d", (int)[objB retainCount]); // 1
NSLog(@"%d", (int)[[objA objB] retainCount]); // 0
objA.objB = objB;
NSLog(@"%d", (int)[objB retainCount]); // 2
/* --> */ NSLog(@"%d", (int)[[objA objB] retainCount]); // 3
NSLog(@"%d", (int)[[objA objB] retainCount]); // 4
NSLog(@"%d", (int)[objB retainCount]); // 4
}
23行目を見てください。 NSLog(@"%d", (int)[[objA objB] retainCount]);
結果は 3 ではなく 2 になるはずですが、呼び出すたび[objA objB]
に保持カウントが 1 ずつ増えるようです。何が起こっているのかわかりません。誰が教えてくれますか?ありがとう!