Что происходит, когда "сохраняют" NSArray или NSMutableArray?
В исходниках
@property(retain) NSString* str;
@sythesize str;
self.str = newStr;
Я понимаю, что на самом деле произойдет следующее
if( str != newStr ){
[str release];
str = [newStr retain];
}
Так как насчет случая с NSArray или NSMutableArray? Кажется, что это сложная, мелкая копия и глубокая копия должна быть рассмотрена.
1 ответ
Это то же самое. Установка свойства только изменяет владельца этого массива, а не содержимое массива (содержимое принадлежит одному и тому же массиву). Следовательно, только массив должен быть -retain
"Ред.
На самом деле, среда выполнения не заботится о конкретном типе свойства Objective-C. Одна и та же процедура установки будет применяться к каждому @property(retain)
свойства.
Чтобы сеттер выполнял поверхностное копирование, сделайте это @property(copy)
, Там нет никакого способа сделать это глубокое копирование.