关于ios:在C中使用@dynamic

Use of @dynamic in objectiveC

本问题已经有最佳答案,请猛点这里访问。

我在各种博客上读到了客观性的"@dynamic"关键字。但我不清楚它是如何与"合成"相比较的。许多人在博客中解释说getter方法和setter方法是在运行时创建的。在iOS中,"动态"是如何工作的还有其他答案吗?我想知道它是如何工作的?还有为什么@dynamic关键字用于nsmangedObject中声明的属性而不是@synthesis?有人能帮我弄清楚这件事吗?


@动态告诉编译器,作为开发人员,您将确保在运行时添加属性的实现。没有提示如何做到这一点(我认为这需要在objc/runtime.h中处理objective-c运行时的内部结构),而且由于没有提示如何做到这一点,所以不能在编写的代码中使用@dynamic。除非你自己想清楚并把答案贴在这里:—)

nsmanagedObject包含@dynamic,因为它的属性是在运行时由核心数据创建的,而不是由objective-c编译器创建的。Objective-C编译器不知道如何创建这些属性,因为它们访问程序员背后的数据库。