到目前为止,我只看到使用@dynamic
属性访问器定义的CoreData。还有哪些方法可以让属性在Cocoa对象中获取动态访问器,以便将它们标记为@dynamic
?
答案 0 :(得分:1)
您可以在运行时通过响应+resolveInstanceMethod:
(核心数据所做的)或使用-forwardInvocation:
进行模拟来生成访问者。我已经看到这在用于支持任意(对象值)属性的模型模型对象中使用,尽管在这种情况下属性是在未实现的类别中声明的,因此没有使用明确的@dynamic
。 (实际上,我写过a stupid hack,这使NSDictionary
以这种方式行事。)
我可以想象一种类似的方法被用于代理对象。
答案 1 :(得分:0)
默认情况下,所有声明的属性都是@dynamic,但您可以将它们声明为@synthesize。 @dynamic意味着,您将在类中提供getter和setter实现,这可能与任何i-var都没有关联。
答案 2 :(得分:0)
您可以自己声明属性动态。例如,如果getter和setter方法是由超类实现的,那么这可能很有用。