NSString retainCount是2147483647

时间:2011-03-30 07:41:12

标签: iphone objective-c xcode

  

可能重复:
  NSString retain Count
  Objective C NSString* property retain count oddity
  When to use -retainCount ?

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

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

int a = [data22 retainCount];
NSLog(@"retain count 1== %d  ====" ,a);

上述代码的输出是

 retain count 1== 2147483647  ====

1 个答案:

答案 0 :(得分:13)

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

严重。不要致电retainCount。永远不会。这没用。

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

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

至于为什么它是2147483647,一张图片胜过千言万语。或者,在这种情况下,31个设置位。 negative one expressed in far too many digits