我可能会在这里丢失一些明显的东西,但是我在其中一个对象上实现了NSCopying。该对象具有不通过getter公开的私有实例变量,因为它们不应该在对象之外使用。使用NSCopying复制私有实例变量的最佳做法
在我的copyWithZone:
的实现中,我需要alloc/init新实例,还要设置其状态以匹配当前实例。我显然可以从copyWithZone:
内部访问当前的私有状态,但我无法将其设置为新对象,因为没有该状态的访问者。
有没有一个标准的解决方法,同时仍然保持数据隐私完好?
谢谢。
感谢提及私有访问器以及NSCopyObject的风险。 – 2010-04-02 15:40:40
我不确定只读访问器如何帮助内存管理?如果你没有用'assign'或'retain'来使用它,不管你是直接使用getter还是变量都没有区别。 – Hemant 2011-01-20 03:22:05
@Hemant,因为调用者不需要小心该属性目前(或将来)是否只读。这不是调用者的业务,它可能会随着时间而改变,然后您需要搜索不正确的代码。通过坚持简单的规则,错误变得明显。当你说“哦,除非我碰巧知道它现在没问题”,那么你正在为自己的维护问题而烦恼。 – 2011-01-20 19:44:05