Что происходит, когда "сохраняют" 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), Там нет никакого способа сделать это глубокое копирование.

Другие вопросы по тегам