什么是iPad/iPhone中的@dynamic

Har*_*sad 10 iphone dynamic objective-c ipad

我很想知道@dynamic在objective-c中的含义是什么以及它是如何工作的.请帮忙

Bil*_*ney 13

@dynamic意味着您将在运行时动态提供这些方法的实现.

http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/ObjCRuntimeGuide/Articles/ocrtDynamicResolution.html

具有所有细节,但基本上使用@dynamic意味着您承诺在运行时为属性承诺的方法提供实现.

特别要看这里;

http://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSObject_Class/Reference/Reference.html

有关如何构造动态方法并将其放入运行时的示例.

Core Data使用此机制来提供访问者.一旦你深入研究它,这真是太酷了:)

而作为旁注,ObjC中的元编程并不适合胆小者,不要发送它直到你弄清楚它,否则你的用户将受到损害.


Nic*_*ver 5

我引用Apple的书The Objective-C Programming Language:

@动态

您可以使用@dynamic关键字告诉编译器您将通过直接提供方法实现或在运行时使用其他机制(如动态加载代码或动态方法解析)来履行属性隐含的API契约.它会抑制编译器在无法找到合适的实现时会生成的警告.只有在知道方法在运行时可用时才应使用它.

你可以在这里找到一份pdf副本.