Какао работает так, что управление памятью всегда выглядит сбалансированным локально внутри любого одного метода *.Это своего рода точка.Вы должны быть в состоянии определить, есть ли у вас утечка или ошибка в методе, просто взглянув на этот метод.Знание глобальной программы не требуется.
Вы несете ответственность за освобождение объекта, если вы получили объект из метода -copy, -alloc, -retain или -new.
Если вы сделаете это:
[obj setProp:foo];
это ваша обязанность выпустить foo?Нет - см. Правила.Если obj сохраняет его (и вы говорите, что знаете, что он это делает), то обязанность obj освободить его в методе dealloc, если не раньше.
Таким образом, если вы сделали это, оно сбалансировано, независимо от того, какое свойство -prop
.
id obj = [[MyObject alloc] init];
[obj setProp:foo];
[obj release];
* за исключением случаев реализации init, copy, dealloc и accessorметоды.