奇怪保留新创建的字符串对象的计数

Pro*_*ofo 1 objective-c

这是我的代码

#import <Foundation/Foundation.h>

int main (int argc, const char * argv[])
{
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    NSString *str = [[NSString alloc]initWithString:@"This is string object"];
    NSLog(@"%lu", [str retainCount]);
    [pool drain];


    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我期望输出为1因为它是新创建的对象,但结果是1152921504606846.这里有什么问题?

Ste*_*ton 6

三个要点:

  1. 这与自动释放池无关.您的变量是allocd,因此它不会添加到池中
  2. 永远不要retainCount用于调试.查看此问题的答案
  3. 你的字符串实际上是一个常量,所以保留计数可能是 MAX_INT.但你不应该依赖它

  • 我不知道.你必须问作者. (2认同)