What does @dynamic do in Objective-C?
Objective-C有一个称为@dynamic的特性。
谷歌只列出动态输入的结果。
我很少在代码中看到这一点,也不理解它的用途。有人能解释一下吗?谢谢。
- 这是stackoverflow.com/questions/4524954/…和stackoverflow.com/questions/1160498/…的副本。
- 这意味着这两个问题也是这一个问题的副本,并且相互重复,使得它们可以互换。我接受答案,然后关闭这个。:)
@dynamic的意思是"我的类将在运行时找出如何响应这个问题。"使用运行时机制来截取一个对象通常不会响应的消息。在使用核心数据数据库存储持久数据的情况下,nsmanagedObject将这些数据转换为对-valueForKey:和-setValueForKey:的调用。
看看斯坦福大学iPhone开发课程的第12课(2010年秋季)。
- 但我的代码如何在运行时向对象添加属性?
- 查看和NSObject.h文件
- @时间机器:@dynamic并不一定意味着属性将在运行时添加,它只是对编译器说"我知道我已经声明了属性,但没有在这个类中实现它,但我知道它将在运行时出现"。它可以像超级类提供的实现一样简单。
- @杰里米,我从没说过。我只是问怎么做。:)
- @时间机器:对不起,我以为你只是在问,因为你看不到如何在运行时添加属性,所以认为@dynamic是没有意义的。我的观点是,确实有一些方法可以在运行时添加属性,但也可以像子类化一样简单。
- 您可以手动研究实现getter和setter方法-(id)setpropertyname:(propertytype)newname-(id)propertyname
- @杰里米,我真的比槟榔屿更喜欢你的解释。你应该把它写在答案里。