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