iOS @dynamic与@synthesize的区别

释放双眼,带上耳机,听听看~!

举例:@property(nonatomic,getter=isOn) BOOL on;

在定义property的时候 ,指定了getter ,首先会在 implementation
里面找isOn方法 作为 “on”属性的getter方法,如果没有找到的话,就会自动生成一个默认的 (BOOL)on { return _on; }  _on是默认的默认生成的实例变量。如果在implementation
里面使用@dynamic限定了“on”属性,那么就必须定义getter指定的函数isOn,否则运行起来就要找不到这个方法的错误。

 

@dynamic 意思是由开发人员提供相应的代码:对于只读属性需要提供 getter,对于读写属性需要提供 setter 和 getter。
@synthesize 意思是,除非开发人员已经做了,否则由编译器生成相应的代码,以满足属性声明。

在声明property属性后,有2种实现选择

@synthesize

编译器期间,让编译器自动生成getter/setter方法。

当有自定义的存或取方法时,自定义会屏蔽自动生成该方法

@dynamic

告诉编译器,不自动生成getter/setter方法,避免编译期间产生警告

然后由自己实现存取方法

或存取方法在运行时动态创建绑定:主要使用在CoreData的实现NSManagedObject子类时使用,由Core Data框架在程序运行的时动态生成子类属性

 

人已赞赏
iOS文章

SVN递交时提示‘file’ is scheduled for addition, but is missing

2020-6-8 21:18:10

iOS文章

iOS 使用componentsSeparatedByCharactersInSet:方法限定输入字符的格式

2020-6-8 22:33:09

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索