• 点语法


    一:格式:对象名.属性名
    此时(p.age)并不是直接访问实例变量
    而是xcode 读取到点语法(p.age)后,会自动替换成set和get方法
    p.age = 18; 点语法在 = 左边,则替换成set方法,p.age = 18等价于[p setAge : 18]

    int a = p.age; 点语法在 = 右边,则替换成get方法,int a = p.age等价于[p age]

    点语法实质上是xcode帮我们做的代码替换。

    总结:p.age 到底是替换成get 方法还是set方法,一般取决于p.age出现在等号左侧还是右
    设置值,还是取值


    NSLog(@"%d", p.age); //此时为取值,所以调用get方法

    二:点语法陷阱:

    self.属性名

    -(void)setAge : (int) newAge{
    self.age = newAge;
    }
    
    //点语法的本质是方法调用,所以上相当于:
    -(void)setAge:(int)newAge{
    [self setAge:newAge];  //造成死循环
    }

     在get方法中:

    return self.age;  
    //相等于
    return [self age]; //也会造成死循环

    点语法注意:

    点语法的本质是get和set方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开相应的方法。如果没有set和get方法,则不能使用点语法。

  • 相关阅读:
    hdu 5238 Calculator(线段树,中国剩余定理¥)
    hdu 5237 Base64(模拟)
    hdu 5236 Article(概率dp¥)
    hdu 2147 kiki's game(找规律)
    hdu 2149 Public Sale(bash)
    Calculation PartⅡ
    Calculator Part Ⅰ (代码规范化修改)
    Calculator Part Ⅰ
    视频课程
    编程题1001.A+B Format (20)
  • 原文地址:https://www.cnblogs.com/MY0101/p/5025419.html
Copyright © 2020-2023  润新知