您可以在使用Objective-C进行编码时在运行时添加属性

时间:2009-04-28 16:12:19

标签: objective-c core-animation

我想知道在运行时是否可以动态地向Objective-C对象实例添加新属性?

我最初的想法只是将getValueForKey重写为“伪造”一个属性,但似乎这对CoreAnimation不起作用。我想要实现的是能够为自定义属性设置动画。如果我创建CALayer的子类并将声明的属性添加到我的子类,我已经能够实现这一点。如果我尝试使用getValueForKey / setValueForKey策略,似乎CoreAnimation不关心它,它显式地寻找声明的属性。

我希望能够动态添加属性,因为我可能不知道在运行时我想要动画的属性。我当然可以创建一个CALayer子类,它具有我想要动画的所有属性......但只是想知道是否有更好的方法来做到这一点......

谢谢,

彼得

2 个答案:

答案 0 :(得分:3)

您是否尝试过覆盖valueForUndefinedKey:相反? (我在一个自定义的NSObject子类上执行此操作,该子类可以具有从数据库中提取名称的各种属性。)

答案 1 :(得分:1)

如果需要,您可以覆盖-respondsToSelector:-doesNotUnderstand:以动态处理传入的消息。