2011-10-26 33 views
0

我有一个包含大量init...方法(UITableViewCell)的类。我的扩展有一个额外的属性,当设置时,将调整各种单元属性,如颜色。我有两个选择来处理财产的变化。设置KVO来观察init方法中的属性

  1. 覆盖属性setter,存储与传递的值,然后设置颜色等
  2. 覆盖所有inits并添加志愿观看,调用设置一个私有方法的颜色等属性

项目#1似乎是最简单的应用,但意味着我必须根据苹果指南手动输入setter代码(保留参与)。

项目#2听起来不错,因为我不必添加setter锅炉的地方,但会花费更多的代码,因为我将不得不重写所有inits。

有没有其他的选择?

回答

2

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

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

+0

谢谢。我挖了一点回到UITableViewCell类,它看起来像我只需要重写一个init方法而不是四个。 – drekka