【发布时间】:2013-04-05 10:11:14
【问题描述】:
我不使用 KVO,主要是出于性能原因,所以我想确保正确禁用它。
来自 Apple Key-Value Observing Programming Guide
自动支持(针对 KVO)由 NSObject 提供,默认情况下可用于符合键值编码的类的所有属性。通常,如果您遵循标准 Cocoa 编码和命名约定,则可以使用自动更改通知——您无需编写任何额外代码。
这是否意味着 Xcode 生成的每个属性都实现了 willChangeValueForKey 和 didChangeValueForKey 方法?
如果是这样,有什么方法(一些标志或其他东西)可以禁用这种行为吗?
我正在使用 accessInstanceVariablesDirectly 并且总是返回 NO,但我不确定这是否足够好。
【问题讨论】:
-
您是否进行了分析以确定这是一个问题?如果不是,那么你的问题毫无意义。
-
我如何分析它?将正常的财产使用情况与究竟是什么进行比较?也许对你来说这毫无意义,但我想知道我使用的编程语言到底是如何工作的。
-
如果 KVO 花费太多时间,仪器将在调用您的属性时显示高 CPU 周期使用率(因为 KVO 调用是同步执行的)。说出于任何其他原因出于性能原因要禁用 KVO 是过早的优化。
标签: ios objective-c performance key-value-observing