@interface
QRATestViewController
()
@property
(nonatomic,
copy) NSArray *testCopyArray;
@property
(nonatomic,
strong) NSArray *testStrongArray;
//
带mutable的类型定义属性不能加copy
@property
(nonatomic,
copy) NSMutableArray *testMutableArray;
@end
-
(IBAction)testTouchUp:(id)sender {
//
在这里可以做一些简单的测试工作
NSMutableArray
*mutableArray = [[NSMutableArray alloc] init];
[mutableArray
addObject:@
"111"
];
self.testCopyArray
= mutableArray;
self.testStrongArray
= mutableArray;
[mutableArray
addObject:@
"2222"
];
//
testCopyArray中的元素不包含2222,但是testStrongArray中的数组元素中包含2222
//
表示mutableArray数组元素的变化不会影响到testCopyArray
NSLog(@
"%@
%@"
,
self.testCopyArray, self.testStrongArray);
//
输出的对象地址是一样的,表示testCopyArray中的元素依然是原先对象
NSLog(@
"%p
%p"
,
self.testCopyArray[
0
],
mutableArray[
0
]);
//
因为testMutableArray带了copy,所以这里默认是copy不是mutableCopy,导致下面一行crash
self.testMutableArray
= mutableArray;
[self.testMutableArray
addObject:@
"333"
];
NSLog(@
"%@"
,
self.testMutableArray);
}