【发布时间】:2013-01-14 02:34:45
【问题描述】:
是否有可能任何对象的保留计数为负值?
我有这个代码
NSString *str = [[NSString alloc] initWithString:@"Hello World"];
NSLog(@"String Retain Count: %i", [str retainCount]);
这将返回保留计数 -1。
为什么会这样?
我也是这样做的
NSString *str = [[NSString alloc] init]
在保留计数中仍然返回负值。
这是怎么发生的?
请帮助理解这件事!!!!!!
【问题讨论】:
-
RetainCount 几乎没用,详见此处:stackoverflow.com/questions/4636146/when-to-use-retaincount
-
@kuba 这不是那个问题的重复,所以请阅读我的问题。
-
@Rizzu:它是重复的。返回的保留计数是
2147483647,而您得到输出-1只是因为您使用带符号整数的%i格式打印了值。 -
好的,那么 "NSString *str = [[NSString alloc] init] " 呢?
-
@Rizzu:
[[NSString alloc] init]返回一个常量空字符串。 - 保留计数是NSUInteger,因此它不能为负数。
标签: iphone ios objective-c memory-management retaincount