Разве NSMutableArray не должен сохранять добавленные объекты? - PullRequest
1 голос
/ 03 ноября 2010

Привет! У меня проблема с 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

1 Ответ

4 голосов
/ 03 ноября 2010

(Первое: вы никогда не должны полагаться на -retainCount.)

Под капотом постоянные строки (строки, определенные, например, как @"foo") являются особенными в том, что -retain и -releaseна самом деле ничего не делать;они всегда рядом со счетом сохранения 1 в качестве оптимизации.

Если вы сделаете что-то вроде:

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

Вы можете увидеть то, что ожидаете.

...