Possible Duplicates:
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  ====

最佳答案

因为您已经看过,所以它是2147483647。不要看,这将是您期望的价值。

说真的不要呼叫retainCount。永远不会。这没用。

之所以这么荒谬,是因为实现细节。 @“ ...”是一个常量字符串。 NSString可以识别常量字符串,并确定您的特定代码不需要第二个占用常量不变字符串的副本,从而返回已经存在的常量字符串。

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

至于为什么是2147483647,一张图片值得一千个字。或者,在这种情况下,设置31个位。

关于iphone - NSString keepCount是2147483647 ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5483357/

10-12 15:02