@property 、@synthesize 、@dynami

2018-09-14  本文已影响8人  kelvin943

@property

本身只是生成 setter/getter 方法的声明

@synthesize

定义成员变量的名称 并且自动生成setter/getter 方法的实现 (用于.m文件中)
@synthesize的写法有一下几种 :

@synthesize ivar ;                        // 定义成员变量名称:ivar
@synthesize ivar = ivar;                  // 定义成员变量名称:ivar
@synthesize ivar = _ivar;                 // 定义成员变量名称:_ivar
@synthesize ivar = abcdeft;               // 定义成员变量名称:abcdeft

iOS 6 之后 LLVM 编译器引入property autosynthesis,即属性自动合成 ,一般情况下只写了@property 就会在 .m 中自动生成 @synthesize 属性名 = _属性名 ,而不是 @property 本身帮我们生成 setter/getter 方法
当@property写在协议@protocol中时候编译器(LLVM)并不会帮我们引入@synthesize 需要我们手动指定,不然在调用的时候回报找不到setter/getter 方法

@dynamic

如果不想编译器自作主张生成这些setter和getter方法,则使用@dynamic。

上一篇下一篇

猜你喜欢

热点阅读