我想知道在Objective-C中,@dynamic是什么意思以及它是如何工作的。请帮忙解答一下。
@dynamic意味着你将在运行时动态提供这些方法的实现。
该链接中包含了详细信息,但基本上使用@dynamic意味着你承诺在运行时提供属性承诺的方法实现。
特别是要看这里:
这里有一个示例,展示如何构造动态方法并将其放入运行时。
Core Data使用此机制来提供访问器。一旦深入研究,它非常酷!:)
另外,作为一个旁注,ObjC中的元编程并不适合脆弱的人,除非你明确理解了它,否则请不要发布它,否则你的用户将会遭受苦难。
我引用了苹果公司的书 The Objective-C Programming Language:
@dynamic
你可以使用 @dynamic 关键字告诉编译器,你将通过直接提供方法实现或在运行时使用其他机制(例如代码的动态加载或动态方法解析)来满足属性隐含的 API 合同。它会抑制编译器如果找不到合适的实现而产生的警告。只有当你知道这些方法在运行时可用时才应该使用它。
你可以在这里找到PDF副本。