NSMutableArray - управление памятью - PullRequest
1 голос
/ 01 июня 2011

просто короткий вопрос: сохраняет ли метод объекта NSMutableArray -addObject: (id) объект-параметр?

Спасибо

Ответы [ 4 ]

2 голосов
/ 01 июня 2011

Да, он сохранит объект.Объект будет освобожден при освобождении массива.Если вы добавляете объекты, размещенные в массиве, убедитесь, что вы освободили их после добавления.

Object *o = [[Object alloc]init];
NSMutableArray *array = [[NSMutableArray alloc] init];
[array addObject:o];
[o release];
[array release];
2 голосов
/ 01 июня 2011

Да, все в коллекции (множество, массив, словарь) будет сохранено в коллекции. Это, конечно, если коллекция сохраняется в первую очередь.

Когда вы добавляете что-либо в коллекцию, вам нужно освободить ее, если вы являетесь ее владельцем.

0 голосов
/ 01 июня 2011

Ответ: да, это так.

И в будущем, вот как вы можете проверить эти ситуации.Вы можете узнать количество сохраненных объектов, используя:

NSLog(@"Count: %d", [object retainCount]);

Используйте этот код до и после добавления объекта в массив, чтобы убедиться в этом.

Я должен предупредить вас, хотя,многие люди советуют не использовать retainCount ни для чего.При этом, я думаю, что можно использовать его для отслеживания увеличения и уменьшения количества счетов для объектов (как в моем ответе), но не более того.

Не зависит от значений retainCount в вашем коде;Просто используйте различия для отслеживания ресурсов и релизов.

0 голосов
/ 01 июня 2011

Да. Он также освобождает все содержащиеся в нем объекты, когда его счетчик достигает нуля.

...