- mutableCopy 创建一个新的可变对象,并初始化为原对象的值,新对象的引用计数为 1;
- copy 返回一个不可变对象。分两种情况:
(1)若原对象是不可变对象,那么返回原对象,并将其引用计数加 1 ;
(2)若原对象是可变对象,那么创建一个新的不可变对象,并初始化为原对象的值,新对象的引用计数为 1。
@interface ViewController (){
MyClass *myClass;
}
@property (nonatomic,copy) NSMutableArray *var;
@end
@implementation ViewController
pragma mark 重写set方法,进行mutableCopy
-(void)setVar:(NSMutableArray *)var{
if (_var!=var) {
_var=[var mutableCopy];
}
}
-
(void)viewDidLoad {
[super viewDidLoad];NSMutableArray *items=[NSMutableArray array];
//@property 为copy时,默认进行[items copy]为NSMutableArray对象,然后进行[NSMutableArray copy]为不可变对象
self.var=items;
//对不可变进行添加操作报错
[_var addObject:@"1"];NSLog(@"items=%p,copyItems=%p",items,_var);
}
网友评论