可能重复:
Objective C NSString* property retain count oddity
为什么这段代码显示大于1的保留值?为什么是2147483647?
NSString *data22 = [[NSString alloc] initWithString:@"fsdfsfsdf"];
int a = [data22 retainCount];
NSLog(@"retain count 1== %d ====" ,a);以上代码的输出如下
retain count 1== 2147483647 ====发布于 2011-03-30 07:52:31
是2147483647因为你看了。不要看,这将是你所期望的价值。
我是认真的。不要打电话给retainCount。永远不会。这是没用的。
为什么这个数字如此荒谬,是因为它有一个实现细节。@“.”是一个常量的字符串。NSString可以识别常量字符串,并决定您的特定代码不需要使用常量不可变字符串的第二个空间副本,从而返回已经存在的常量字符串。
也就是单身人士。其实例仅由编译器创建的类。对此retain/release/autorelease/retainCount完全没有意义。
至于为什么是2147483647,一幅画值一千字。或者,在这种情况下,31设置位。

https://stackoverflow.com/questions/5483357
复制相似问题