我正在使用此属性访问器获取CALayer的子层:
// @property(copy) NSArray *sublayers
NSArray* layer = mylayer.layer.sublayers;
由于此属性使用“copy”,因此每次执行时都会执行:
mylayer.layer.sublayers
是为我制作的子图层数组的完整副本吗?如果是这样可能会很糟糕,因为我可能有一百个+层,并且绝对不想创建它们的大量副本。我只是想要计算并迭代现有的图层,只是指向现有图层的指针
谢谢
答案 0 :(得分:2)
当您使用'copy'声明并且@synthesize
属性时,则在设置属性时使用copy。
在您的示例中,您只访问仅为您提供指向子图层数组的指针的值。
Here's a link关于这一点的ADC文档。
<强>更新强>
mutableCopy
。这显示在我提供的documentation link中。答案 1 :(得分:1)
我不确定我理解你的答案Abizern所以让我这样说:
如果你在一个属性上使用(复制),你将会制作该对象的全新副本,因此会浪费大量内存。我不确定他们为什么这样做,如果他们想要保护价值不变,他们可以只使用(只读)。另外请记住,大多数值类在Obj-C中是不可变的,所以它们无论如何也无法改变它。