我观察到以下行为。
取了两个属性变量。
@property (nonatomic, retain) NSString *stringOne;
@property (nonatomic, assign) NSString *stringTwo;
在 .m 文件中写在下面的代码中..
NSMutableString *localstring= [[NSMutableString alloc] initWithString:@"test"];
self.stringOne = localstring;
NSLog(@"localstring = %d", [string retainCount]);
NSLog(@"string one retain count = %d", [self.stringOne retainCount]);
self.stringTwo = localstring;
NSLog(@"localstring = %d", [localstring retainCount]);
NSLog(@"string two retain count = %d", [self.stringTwo retainCount]);
由于 alloc,这里 localstring 保留计数为 1。现在我给了 self.stringOne = localString。
由于 stringOne 的保留属性,localstring 的保留计数将变为 2。现在我给了 self.stringTwo = localString。
即使在这里,localstring 保留计数也会增加 1。请注意,我已将属性分配给 stringTwo。实际上,localstring 或 stringTwo 的保留计数不应增加 1,因为它是分配属性。如果我错了,请纠正我。
谢谢吉腾