Предположим, есть строка типа NSSTring
NSString *string;
Существует массив с именем testArray, который является массивом строковых объектов
string=[testArray objectAtIndex:1];
Нужно ли нам дать
[string release]
или нет?
Нет, вам не нужно делать
Вы должны release объект, только если вы выделите для него память. Проверьте это Политика управления памятью для получения более подробной информации о alloc и release.
release
нет .. в этом случае нет.
если вы получаете строку из функции, она обычно имеет флаг автоматического выпуска и будет освобождена позже.
Вам нужно отпустить его, если вы retain это, если вы alloc это или copy это.
retain
alloc
copy
Вы должны прочитать: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/MemoryMgmt/Articles/mmRules.html#//apple_ref/doc/uid/20000994-BAJHFBGH
В этом случае вам не нужно освобождать строку.Вы отпускаете только те Объекты, которыми вы владеете (созданные с помощью alloc / init, копируете или сохраняете).Пройдите документ управления памятью от Apple.В этом случае testArray принадлежит строка.Следовательно, он освобождает его, когда больше не требуется
Только если вы также назвали [string retain]. В противном случае память управляется NSArray. Вы можете вызвать [string retain], если вам нужно удалить его из массива, но при этом сохранить ссылку на него.
Не нужно выпускать. Вы должны освободить только объекты, которые вы выделили.