NSString retainCount是2147483647

Iqb*_*han 2 iphone xcode objective-c

可能重复:
NSString保留计数
目标C NSString*属性保留计数
奇数何时使用-retainCount?

为什么此代码显示保留值大于1?为什么它是2147483647?

NSString *data22 = [[NSString alloc] initWithString:@"fsdfsfsdf"];

int a = [data22 retainCount];
NSLog(@"retain count 1== %d  ====" ,a);
Run Code Online (Sandbox Code Playgroud)

上面代码的输出是

 retain count 1== 2147483647  ====
Run Code Online (Sandbox Code Playgroud)

bbu*_*bum 13

这是2147483647因为你看了.不要看,这将是你期望的价值.

认真.不要打电话retainCount.永远不会.这没用.

为什么这么荒谬的数字是因为一个实现细节.@"..."是一个常量字符串. NSString可以识别常量字符串并确定您的特定代码不需要第二个空间消耗常量不可变字符串的副本,因此返回已存在的常量字符串.

就是一个单身人士.其实例仅由编译器创建的类的类.对于哪个retain/release/autorelease/retainCount完全没有意义.

至于为什么它是2147483647,一张图片胜过千言万语.或者,在这种情况下,31个设置位. 负数用太多数字表示