可能重复:
NSString retainCount is 2147483647
Objective C NSString* property retain count oddity
查看以下代码:
NSString* testString = [[NSString alloc] initWithString:@"Test"];
NSLog(@"[testString retainCount] = %d", [testString retainCount] );
NSMutableArray* ma = [[NSMutableArray alloc] init];
[ma insertObject:testString atIndex:0];
[testString release];
NSLog(@"%@", [ma objectAtIndex:0]);
这是控制台上的输出:
[testString retainCount] = 2147483647
Test
这怎么可能发生?我预计1不是2147483647!
答案 0 :(得分:1)
使用字符串文字启动NSString对象,并发生以下两件事:
如上所述,您仍然应该按照内存管理规则使用字符串对象(因为您使用alloc / init创建它应该释放它)并且你会没事的
答案 1 :(得分:0)
您对retainCount的结果只能有两个期望:
1)它大于1.你无法预测它实际上是多少,因为你不知道还有谁在使用它。你不知道其他人是如何使用它的。这不是你应该关心的数字。
2)人们会告诉你不要使用它。因为你不应该。使用规则来平衡您的保留和发布。不要使用retainCount。它会让你感到沮丧和困惑,没有任何价值。