1

嗨,我正面临 Linux / GNUstep 的问题。我的 NSMutableArray(s) 似乎没有保留任何添加的对象。他们不应该吗?例子:

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
4

1 回答 1

4

(第一:你不应该依赖-retainCount.)

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

如果您执行以下操作:

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

你可能会看到你所期望的。

于 2010-11-03T12:44:58.767 回答