【问题标题】:NSString retainCount is 2147483647 [duplicate]NSString retainCount 是 2147483647 [重复]
【发布时间】:2011-07-25 21:32:09
【问题描述】:

可能的重复:
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  ====

【问题讨论】:

    标签: iphone objective-c xcode


    【解决方案1】:

    它是 2147483647,因为你看了。不要看,它会是你所期望的值。

    说真的。不要打电话给retainCount。永远不会。没用。

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

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

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

    【讨论】:

    • 对不起,我想我需要简要讨论一下图片
    • 诚然,这有点怪胎。但是......很高兴你明白了!
    猜你喜欢
    • 2011-03-28
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 2013-02-01
    • 2018-02-20
    • 2011-08-08
    • 2012-08-27
    • 1970-01-01
    相关资源
    最近更新 更多