这个问题在这里已经有了答案:
When to use -retainCount?
(11 个回答)
Why retain count in negative value? [duplicate]
(1 个回答)
9年前关闭。
我有属性(property):
@property(nonatomic, retain) NSMutableArray *myvar;
第一种情况:
myvar = [[NSMutableArray alloc] init];
NSLog(@retainCount: %i:", [myvar retainCount]);
输出:
retainCount: 1
第二种情况:
self.myvar = [[NSMutableArray alloc] init];
NSLog(@retainCount: %i:", [self.myvar retainCount]);
输出:
retainCount: 2
我的问题是:为什么在第二种情况下保留值是 2 ?
最佳答案
唯一有效的答案:永远不要检查、使用、信任retainCount。它不用于调试或直接用于内存管理。
有用:whentouseretaincount.com
但在您的情况下:由于您没有使用 ARC(否则编译将不允许您使用 retainCount
),因此您已过度保留。
它保留在这里@property(nonatomic, retain) NSMutableArray *myvar;
在这里:self.myvar = [[NSMutableArray alloc] init];
做:
self.myvar = [[[NSMutableArray alloc] init] autorelease]; //will release once soon
或我最喜欢的,独立于 ARC/MRC 和短
self.myvar = [NSMutableArray array]; // identical to the first example
或更明确
NSMutableArray *var = [[NSMutableArray alloc] init];
self.myvar = var;
[var release];
关于ios - 为什么retainCount返回2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14912569/