NSMutableArray不应该保留添加的对象吗?

时间:2010-11-03 11:34:20

标签: objective-c nsmutablearray gnustep

您好我面临Linux / GNUstep的问题。我的NSMutableArray似乎没有保留任何添加的对象。不应该吗?例如:

NSString * str = @"test";
NSMutableArray * arr = [[NSMutableArray alloc] init];
NSLog(@"before add retainCount: %d", [str retainCount]);
[arr addObject: str];
NSLog(@"after add retainCount: %d", [str retainCount]);

输出:

before add retainCount: 1
after add retainCount: 1

1 个答案:

答案 0 :(得分:4)

(第一:你永远不要依赖-retainCount。)

在幕后,常量字符串(字符串定义为,例如@"foo")是特殊的-retain-release实际上并没有做任何事情;作为优化,他们总是以保留计数为1。

如果您执行以下操作:

NSString * str = [NSString stringWithFormat:@"%@%@", @"foo", @"bar"];

你可能会看到你的期望。