Вызывает ли утечка добавление объекта без ссылки на коллекцию? - PullRequest
0 голосов
/ 29 ноября 2010

Не пропускает ли следующая строка этот объект [[NSMutableDictionary alloc] init]?

[myCollection setObject:[[NSMutableDictionary alloc] init] forKey:@"myDictionary"];

Я предполагаю, что это не так, потому что объект никогда не назначается для ссылки ... но нав то же время я подвергаю сомнению это, потому что я выделил объект ...

Будет ли следующее работать как альтернатива?

[myCollection setObject:[NSMutableDictionary dictionary] forKey:@"myDictionary"];

1 Ответ

2 голосов
/ 29 ноября 2010

Первая утечка, вторая - нет.

Присвоение ссылки на объект в переменную вообще не влияет на владение объектом.Вы вызвали alloc, что означает, что вы являетесь владельцем, независимо от того, фиксируете ли вы результаты этого вызова вообще.Если вы этого не сделаете, значит, у вас есть утечка.

Второй параметр ([NSMutableDictionary dictionary]) не будет пропущен, поскольку +dictionary возвращает объект, не принадлежащий (автоматически выпущенный).в двух словах, ваша интуиция верна.Поздравляем!Многие люди, которые задают вопросы об управлении памятью, обычно ошибаются.:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...