Цель C: Выпуск списка, это вызовет потенциальные утечки? - PullRequest
1 голос
/ 17 ноября 2011

Пытался найти ответ онлайн, но не смог. Так что мне интересно, если кто-то еще знает и почему?

Скажем, у меня есть NSDictionary или NSArray, в котором хранятся объекты внутри них. Если я выпущу NSDictionary, есть ли потенциальная утечка, потому что я не выпустил объекты в списке NSDictionary?

Например:

NSDictionary *dict = [NSDictionary alloc] init];
// Create a bunch of objects, NSStrings, etc.
// Store it into dict.
[dict release];

Это также высвободит все внутри диктата? (объекты, строки и т. д.).
Заранее спасибо людям!

Ответы [ 2 ]

1 голос
/ 17 ноября 2011

Когда вы делаете релиз для NSDictionary или NSArray, пока количество сохраняемых объектов в массиве равно 1 (имеется в виду, что вы освободили объекты после того, как вставили их в структуру данных), затемосвободить словарь или массив, эти объекты также будут освобождены.

1 голос
/ 17 ноября 2011

Все элементы в NSDictionary или NSArray автоматически сохраняются при добавлении и освобождении при удалении или при уничтожении списка.

Например:

NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];

MyObject *obj = [[MyObject alloc] init];
[dict setObject:obj forKey:@"foo"];  // the dictionary retains "obj"
[obj release];  // this matches the "alloc/init"
                // but "obj" still is retained by the dictionary

[dict release];  // now "obj" gets released
...