1

可能重复:
将 Obj-C 2.0 属性与可变对象(例如 NSMutableArray)一起使用的最佳方法是什么?

请原谅我糟糕的英语:)

在 Objective C 中,'copy' 限定符不保留可变性。我们必须让一个属性“强大”或自己提供一个 setter。

我只想知道为什么没有提供 'mutablecopy' 限定符。任何具体原因或设计权衡?

4

1 回答 1

3

为什么没有“可变副本”?

因为制作可变副本实际上具有深刻而微妙的含义,这使它变得不平凡。同样,您几乎从不希望对象内部存储在外部是可变的。

此外,如果属性要支持可变副本,则需要有一个用于 setter 的版本和一个用于 getter 的版本,因为每个版本都有非常不同的潜在角色(如果您确实想要一个可变属性,您可能需要一个可变复制 setter和正常的保留吸气剂。或相反。)。

这些都没有解决深层与浅层可变副本的更严重问题。

于 2012-08-01T15:44:44.803 回答