ios开发基础之@dynamic关键字的作用

【IT168 技术】先引用一段apple的解释:

  @dynamic

  You use the@dynamickeyword to tell the compiler that you will fulfill the API contract implied by a property either by providing method implementations directly or at runtime using other mechanisms such as dynamic loading of code or dynamic method resolution. It suppresses the warnings that the compiler would otherwise generate if it can"t find suitable implementations. You should only use it if you know that the methods will be available at runtime.

  The example shown inListing 5-3illustrates using@dynamicwith a subclass ofNSManagedObject.

  Listing 5-3 Using @dynamic with NSManagedObject

  @interface MyClass : NSManagedObject

  {

  }

  @property(nonatomic, retain) NSString *value;

  @end

  @implementation MyClass

  @dynamic value;

  @end

  NSManagedObjectis provided by the Core Data framework. A managed object class has a corresponding schema that defines attributes and relationships for the class; at runtime, the Core Data framework generates accessor methods for these as necessary. You therefore typically declare properties for the attributes and relationships, but you don"t have to implement the accessor methods yourself, and shouldn"t ask the compiler to do so. If you just declared the property without providing any implementation, however, the compiler would generate a warning. Using@dynamicsuppresses the warning.

  大概的翻译一下:

  @dynamic 就是要来告诉编译器,代码中用@dynamic修饰的属性,其getter和setter方法会在程序运行的时候或者用其他方式动态绑定,以便让编译器通过编译。其主要的作用就是用在NSManageObject对象的属性声明上,由于此类对象的属性一般是从Core Data的属性中生成的,Core Data框架会在程序运行的时候为此类属性生成getter和Setter方法。

你可能感兴趣的:(ios,compiler,getter,attributes,methods,accessor)