-
strong
修饰NSMutableArray
和NSArray
,无论赋值给它NSArray
对象或者NSMutableArray
都是对象都是浅拷贝
@property (nonatomic, strong) NSArray *sArray;
@property (nonatomic, strong) NSMutableArray *sMulArray;
//
//
NSArray *array = @[@"a"];
self.sArray = array;
//浅拷贝,仅仅指针指向array对象
NSMutableArray *mulArray = [NSMutableArray arrayWithObject:@"aMul"]
self.sArray = mulArray;
self.sMulArray = mulArray;
//浅拷贝, 指针指向mulArray
-
copy
修饰NSMutableArray
和NSArray
- 给它赋值可变对象深拷贝, 创建一个
NSArray
对象,并指向它。
- 赋值不可变对象,浅拷贝,仅仅指针指向赋值对象。
@property (nonatomic, copy) NSArray *cArray;
@property (nonatomic, copy) NSMutableArray *cMulArray;
//
//
NSArray *array = @[@"a"];
self.cArray = array;
//浅拷贝, 指针指向array对象
NSMutableArray *mulArray = [NSMutableArray arrayWithObject:@"m"];
self.cArray = mulArray;
self.cMulArray = mulArray;
//深拷贝, 都会创建一个新的不可变对象
//相当于self.cArray = [NSArray arrayWithObject:@"m"];
// self.cMulArray = [NSArray arrayWithObject:@"m"];
- NSString使用copy和strong修饰同理