Kri*_*nan 5 properties objective-c
我知道如果任何其他对象正在观察属性的变化,那么在dealloc中使用setter会产生问题.但为什么我们不应该在初始化器中使用它们?
我在初始化器中使用访问器时从未遇到任何问题.也许这取决于你在setter和getter中有多少魔法 - 如果访问者做了太聪明的事情,你可能会在初始化器中使用它们时遇到麻烦.
现在我想到了它,我甚至使用了访问器dealloc.再次,没有问题.如果有人正在观察一个物体,他应该确保该物体首先不会被释放.
因此,除非其他人提出一个引人注目的反驳论点,否则我认为您可能会尝试使用访问器init,dealloc并查看它是如何工作的.
不使用访问器的唯一原因-init是因为您的对象未完全初始化并且访问者可能依赖于它.如果您有一个覆盖访问器方法的子类,则可能会发生这种情况.
重新分配存在一个对称问题,因为重写的访问器可能依赖于不在部分解除分配的对象上调用.还有一个问题是您可能会发送虚假的KVO通知.
这是适当封装的核心.子类不应该关心超类的实现细节.
| 归档时间: |
|
| 查看次数: |
145 次 |
| 最近记录: |