OC----点语法

对象名.去掉下划线的属性名;

    p1.name = @"jack";        这个时候就会将@"jack"赋值给p1对象的_name属性.
    NSString *name = p1.name; 把p1对象的_name属性的值取出来.
 
4.1 原理:  p1.age = 18;    这句话的本质并不是把18直接赋值给p1对象的_age属性.
	点语法在编译器编译的时候.其实会将点语法转换为调用setter、getter的代码.
 
4.2 赋值,取值调用过程:
    1) 当使用点语法赋值的时候. 这个时候编译器会将点语法转换为调用setter方法的代码.
        对象名.去掉下划线的属性名 = 数据;
        转换为:[对象名 set去掉下划线的属性名首字母大写:数据]; 如:
        p1.age = 10;  会换成: [p1 setAge:10];
    
    
    2) 当使用点语法取值的时候.这个时候编译器会将点语法转换为调用getter方法的代码.
        对象名.去掉下划线的属性名;
        转换为:[对象名 去掉下划线的属性名]; 如:
        int age = p1.age; 会换成:  int age = [p1 age];
 
 
4.3注意:
    1) 在getter和setter中慎用点语法,因为有可能会造成无限递归 而程序崩溃,
    2) 点语法在编译器编译的时候 会转换为调用setter getter方法的代码,并且方法名要符合规范.
        p1.name = @"jack";
        [p1 setName:@"jack"]
        NSString *name = p1.name;
        NSString *name = [p1 name];
    
    3) 如果属性没有封装getter setter 是无法使用点语法的, 因为点语法的本质是getter setter方法. 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值