设置KVO以在init方法中监视属性

时间:2011-10-26 01:22:24

标签: ios key-value-observing init

我有一个包含大量init...方法的类(UITableViewCell)。我的扩展有一个额外的属性,在设置时,将调整各种单元格属性,如颜色。我有两个选项可以处理对房产的更改。

  1. 覆盖属性设置器,存储传递的值,然后设置颜色等。
  2. 覆盖所有内容并在属性上添加KVO监视,该监视调用私有方法来设置颜色等。
  3. 项目#1似乎是最简单的应用,但意味着我必须根据Apples指南手动输入setter代码(保留参与)。

    项目#2最初听起来不错,因为我不必添加setter锅炉位置,但会花费更多代码,因为我必须覆盖所有的内容。

    还有其他选择吗?

1 个答案:

答案 0 :(得分:2)

您只需覆盖designated initializer(s)即可。通常,大多数类只有一个指定的初始值设定项,符合<NSCoding>的类有两个(第二个是-initWithCoder:)。

不要忘记,如果您在init中设置KVO,则必须记住在-dealloc中取消注册。当对象离开时,对象不会自动取消注册KVO,如果你忘记了,那么将来在同一地址分配的任何对象都会继承被泄露的KVO观察者。