请查看我的代码:
@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]);
我认为结果应该是 2 而不是 3,但每次调用[objA objB]
似乎都会将保留计数增加 1。我不知道发生了什么。谁能告诉我?谢谢!