【问题标题】:Setting up KVO to watch properties in init methods设置 KVO 以监视 init 方法中的属性
【发布时间】:2011-10-26 01:22:23
【问题描述】:

我有一个包含大量init... 方法(UITableViewCell)的类。我的扩展程序有一个额外的属性,当设置时,它将调整各种单元格属性,例如颜色。我有两种选择来处理对属性的更改。

  1. 覆盖属性设置器,存储传递的值,然后设置颜色等。
  2. 覆盖所有初始化并在属性上添加一个 KVO 监视,该监视调用私有方法来设置颜色等。

第 1 项似乎是最容易应用的,但这意味着我必须按照 Apple 的指南手动输入设置器代码(涉及保留)。

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

还有其他选择吗?

【问题讨论】:

    标签: ios key-value-observing init


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢。我深入研究了 UITableViewCell 类,看起来我只需要重写一个 init 方法而不是四个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-30
    • 2020-02-27
    • 2017-12-14
    • 1970-01-01
    • 2011-07-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多