美文网首页
@synthesized与@dynamic的区别与使用方法

@synthesized与@dynamic的区别与使用方法

作者: 原风景 | 来源:发表于2018-01-15 14:42 被阅读0次

前言:

在使用@property定义属性时,有两个对应的关键字,即@synthesize@dynmic,如果都没有使用这两个关键字时,它有个默认值是@syntheszie var = _var;

@synthesize与@dynmic的区别:

  • @synthesize让编译器自动生成getter/setter方法。
  • @dynmic让编译器不自动生成getter/setter方法
  • @synthesize可以使用成员变量方式去访问和赋值,如_var = @"xx";,而@dynmic不可以,因为它不会自动合成成员变量。

用法:

@synthesize

// 自动生成getter/setter方法,合成成员变量(可使用_var方式访问属性)
@synthesize var = _var;

// 自动生成getter/setter方法,不合成成员变量(不可使用_var方式访问属性)
@synthesize var;

@dynmic

// 不自动生成getter/setter方法,不合成成员变量(不可使用_var方式访问属性)
@dynmic var;

// 语法错误,不允许这么定义
@dynmic var = _var;

使用场景:

  1. 父类定义了某个属性,子类想重新定义这个属性时,需要明确使用@synthesize@dynmic,不然会有警告。但是具体是使用哪一个,就看你需不需要getter/setter方法了。
  2. CoreData定义属性都用@dynamic,CoreData会在运行时动态为所有属性生成getter/setter方法,所以使用@dynamic告诉编译器不要自动生成getter/setter方法。

相关文章

网友评论

      本文标题:@synthesized与@dynamic的区别与使用方法

      本文链接:https://www.haomeiwen.com/subject/fferoxtx.html