@property(nonatomic,copy) NSMutableArray * array1;
copy表示,array的setter方法
- (void)setArray1:(NSMutableArray *)array1 {
if (_array1 != array1) {
[_array1 release];
_array1 = [array1 copy]; //内容拷贝
}}
1 不管是集合类对象(NSArray,NSDictionary等)还是非集合类对象(NSString), 接收到copy消息时,copy返回的都是不可变对象;接收到mutableCopy消息时, mutableCopy 返回的都是可变对象。不可变对象调用可变对象方法时,crash。
2 NSArray的copy -->指针拷贝-->浅拷贝,其余 NSArray的mutableCopy,NSMutableArray的copy, NSMutableArray的mutableCopy 均为深拷贝(内容拷贝)。NSString,NSDictionary及其对应的可变类型都可以此类推。
网友评论