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

Muh*_*wan 4 iphone memory-management objective-c ios retaincount

可能重复:
NSString保留Count

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

我有这个代码

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

这将返回保留计数 -1.

为什么会这样?

我也是这样做的

NSString *str = [[NSString alloc] init]
Run Code Online (Sandbox Code Playgroud)

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

这是怎么回事?

请帮忙了解这件事!!!!!

小智 6

retainCount不返回对象的引用计数. - 它返回无关的废话.

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