【问题标题】:What does @dynamic do in Objective-C? [duplicate]@dynamic 在 Objective-C 中做了什么? [复制]
【发布时间】:2011-06-05 01:12:43
【问题描述】:

Objective-C 有一个称为@dynamic 的功能。

Google 仅列出有关动态类型的结果。

我很少在代码中看到这个,我不明白它的用途。谁能给我解释一下?谢谢。

【问题讨论】:

标签: objective-c dynamic


【解决方案1】:

@dynamic 的意思是“我的班级将弄清楚如何在运行时对此做出响应。”使用对象的运行时机制来拦截它通常不会响应的消息。在 Core Data db 用于存储持久数据的情况下,NSManagedObject 将这些转换为对-valueForKey:-setValueForKey: 的调用。

查看斯坦福大学 iPhone 开发课程的 Lecture 12(2010 年秋季)。

【讨论】:

  • 但是我的代码如何在运行时向对象添加属性?
  • 签出<objc/runtime.h>NSObject.h文件
  • @Time Machine: @dynamic 并不一定意味着该属性将在运行时添加,它只是对编译器说“我知道我已经声明了该属性但没有实现它在这堂课上,但我知道它会在运行时出现”。它可以像已知的实现由超类提供一样简单。
  • @JeremyP 我从来没有说过。我只是问怎么做。 :)
  • @Time Machine:对不起,我以为您只是在问,因为您看不到如何在运行时添加属性,因此认为@dynamic 毫无意义。我的观点是,是的,有一些方法可以在运行时添加属性,而且它可以像子类化一样简单。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-23
  • 1970-01-01
  • 2012-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多