Следующий код находится на веб-сайте Apple.
1) В методе setMyArray
необходимо ли выпускать myArray
перед установкой для него нового значения?Я думал, что установка значения объекта для нового объекта освободит старый объект из памяти.
2) Почему он говорит myArray = [newArray mutableCopy];
, а не просто говорит myArray = newArray;
?Нужно ли передавать изменяемую копию в наше свойство?
@interface MyClass : NSObject {
NSMutableArray *myArray;
}
@property (nonatomic, copy) NSMutableArray *myArray;
@end
@implementation MyClass
@synthesize myArray;
- (void)setMyArray:(NSMutableArray *)newArray {
if (myArray != newArray) {
[myArray release];
myArray = [newArray mutableCopy];
}
}
@end
РЕДАКТИРОВАТЬ: Было бы то же самое, если бы myArray был (неатомный, сохранить)
Apple Documentation
copy
Specifies that a copy of the object should be used for assignment. (The default is assign.)
**The previous value is sent a release message**.