美文网首页
synthesize

synthesize

作者: kingandyoga | 来源:发表于2016-06-03 10:15 被阅读46次

    synthesize

    在这里总结一下这个常用的关键字

    首先:

    实例变量 = 成员变量 = ivar

    一般如果了属性的时候,编译器会自动编写访问属性需要的方法,这个过程叫做自动合成。除了生成代码之外,编译器还会自动向类中添加适当类型的实例变量,并且在属性的前面加下划线,作为实例变量的名字。

    @interface CCObject :NSOject
    @property NSString *name;
    @end
    

    在上面的代码中会生成一个实例变量:_name。这时候 synthesize 关键字允许我们来指定这个实例变量的名字:

    @implementation CCObject
    @synthesize name= _myName;
    @end
    

    这样本来实例名字是_name就会变成_myName了,一般情况下就使用默认的名字就好了。
    如果用关键字置顶的成员变量的名字已经存在了,那么就不回再生成实例了。


    那在什么情况下我们需要主动使用 synthesize 呢。

    在上面我们说到,编译器会自动帮我们自动合成实例变量,那么什么时候不回自动合成,什么时候我们就应该会使用 synthesize,不回自动合成的情况有:

    • 同时重写了 setter 和 getter方法
    • 重写了 readonly 属性的 getter
    • 使用了 @dynamic
    • 在 @protocol 中定义的所有属性
    • 在 category 中定义的所有属性
    • 重载的属性

    相关文章

      网友评论

          本文标题:synthesize

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