有没有办法在运行时在Obj-C中声明属性?我一直在寻找类似class_addMethod
但属性。在运行时声明属性?
0
A
回答
2
一个常见的误解是,@property
意味着代码生成。它不是。 @synthesize
这样做。所以,真的,你的问题可能是有没有办法在运行时生成setter/getter方法?
答案当然是肯定的,你会准确地使用你已经找到的东西。
0
属性是getter/setter方法的语法糖。
你不能在运行时声明它们。正如上面的评论所说,你将如何使用它们?
但是你可以声明它们并在运行时添加实现。 @synthesize关键字只需安装默认的getter/setter实现。为了防止这种情况,请使用@dynamic关键字,并在运行时提供实现。
你可能想要看一下轻量级的方法,比如拦截消息(NSObject >>(id)forwardingTargetForSelector和相关的方法)。
+0
我实际上是在寻找自动KVO/KVC。有办法手动完成,但我最终放弃了这种方法,但是嗯。 – 2011-02-26 05:56:04
相关问题
- 1. RDFS - 声明属性
- 2. XMLNS属性声明
- 3. 在运行时声明类成员D
- 4. 在运行时声明常量(Java)?
- 5. 何时声明静态属性?
- 6. 声明委托属性时出错
- 7. 声明对象时访问属性?
- 8. 属性声明中的__block属性
- 9. asp.net中的属性?属性声明?
- 10. 运行Oracle声明
- 11. Python和类属性声明
- 12. xUnit声明多个属性
- 13. 声明属性访问器
- 14. c#类属性声明
- 15. 'class'属性没有声明
- 16. ios AppDelegate属性声明
- 17. 未声明'layout_bellow'属性
- 18. 属性上声明类型
- 19. 如何声明python声明性属性模式
- 20. 静态声明何时运行?
- 21. 在自定义NSMutableArray中声明属性
- 22. 在运行时如何在运行时更改属性值
- 23. 在声明的属性中获取属性名称
- 24. 用属性声明实例变量或不声明时有什么区别?
- 25. openseadragon更新属性showReferenceStrip在运行时
- 26. 在运行时设置sample_variables属性
- 27. 在运行时添加属性
- 28. Castle.DynamicProxy2并添加属性在运行时
- 29. 得到属性类型在运行时
- 30. 在运行时更改log4j属性
这一点到底是什么?他们不会做任何事情。您只能在编译时使用为类型声明的属性,并将它们转换为方法调用以在运行时执行它们的工作。除非通过方法调用,否则编译器不会让您获取或设置它们,因此您可以跳过该属性并添加方法。 – Chuck 2011-02-16 22:09:27