点语法

作者: 越天高 | 来源:发表于2019-02-20 20:50 被阅读14次
    • 如果给属性提供了getter和setter方法, 那么访问属性就又多了一种访问方式 , 点语法
    • 点语法其实它的本质是调用了我们的setter和getter方法
    • 点语法是一个编译器的特性, 会在程序翻译成二进制的时候将.语法自动转换为setter和getter方法
    • 如果点语法在=号的左边, 那么编译器会自动转换为setter方法
    • 如果点语法在=号的右边, 或者没有等号, 那么编译器就会自动转换为getter方法


      dyf.png

    3.点语法注意

    • 点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法调用。

    • 切记点语法的本质是转换成相应的对setter和getter方法调用,如果没有set和get方法,则不能使用点语法。

    • 不要在getter 与 setter方法中使用本属性的点语法

    - (void) setAge:(int)age {
        // 下面的代码会引发死循环
        self.age = age;
            //编译器展开后 [self setAge:age]
    }
    
    
    - (int) age {
        // 下面的代码会引发死循环
        return self.age;
              // 编译器展开后 [self   age]
    }
    

    相关文章

      网友评论

        本文标题:点语法

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