在 UITabBar.h 中,一个属性签名的副本
@property(nonatomic,copy) NSArray *items; // 获取/设置可见
这是一个数组 “复制”是什么意思?复制 NSArray 容器 obj?复制每个 obj NSArray 包含的内容?或者其他的东西。
所以有一个测试
UITabBar* testBar = [[UITabBar alloc] init];
UITabBarItem* item = [[UITabBarItem alloc] init];
NSArray* array = [[NSArray alloc] initWithObjects:item, nil];
NSLog(@"bar:%p,%d", testBar, testBar.retainCount);
NSLog(@"item:%p,%d", item, item.retainCount);
NSLog(@"array:%p,%d", array, array.retainCount);
testBar.items = array;
NSLog(@"that item:%p,%d", [testBar.items lastObject], [[testBar.items lastObject] retainCount]);
NSLog(@"testBar.items:%p,%d", testBar.items, testBar.items.retainCount);
结果
栏:0x96a9750,1
项目:0x96aa230,2
数组:0x96aa280,1
那个项目:0x96aa230,2
testBar.items:0x96aa280,6
为什么容器数组和数组中的 obj 都没有被“复制”?