为什么将计数保留在负值?

时间:2013-01-30 10:05:14

标签: iphone ios objective-c memory-management retaincount

  

可能重复:
  NSString retain Count

是否有可能任何对象的保留计数为负值?

我有这段代码

NSString *str = [[NSString alloc] initWithString:@"Hello World"];
NSLog(@"String Retain Count: %i", [str retainCount]);

这将返回保留计数 -1。

为什么会这样?

我也是这样做的

NSString *str = [[NSString alloc] init]

仍然是保留计数的返回负值。

这是怎么回事?

请帮助理解这件事!!!!!

1 个答案:

答案 0 :(得分:6)

retainCount doesn't return the reference count of an object. - 它会返回无关的废话。

(出于性能原因,不可变常量字符串在复制时返回self。如果将指针与@""[[NSString alloc] initWithString:@""]进行比较,它们将是相等的。)