美文网首页
@property 、@synthesize 、@dynami

@property 、@synthesize 、@dynami

作者: kelvin943 | 来源:发表于2018-09-14 14:06 被阅读8次

    @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。

    相关文章

      网友评论

          本文标题:@property 、@synthesize 、@dynami

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