您好我面临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
答案 0 :(得分:4)
(第一:你永远不要依赖-retainCount
。)
在幕后,常量字符串(字符串定义为,例如@"foo"
)是特殊的-retain
而-release
实际上并没有做任何事情;作为优化,他们总是以保留计数为1。
如果您执行以下操作:
NSString * str = [NSString stringWithFormat:@"%@%@", @"foo", @"bar"];
你可能会看到你的期望。