C语言 点语法的总结

原创 2015年07月10日 23:07:44

第一部分  点语法代替中括号的使用


例:

Student *stu = [[Student alloc] init];// 设置age的值

stu.age = 10; // 等价于[stu setAge:10];// 取出age的值

int age = stu.age; // 等价于int age = [stu age];NSLog(@"age is %i", age);


注意:


1)把原来的[stu setAge:10]替换成了stu.age = 10。听清楚了,这两种写法是完全等价的。即这里的stu.age并不是代表直接访问stu对象的成员变量age,而是编译器遇到stu.age = 10的时候会自动将代码展开成[stu setAge:10]

2)把原来的int age = [stu age]替换成了int age = stu.age。这两种写法又是完全等价的,stu.age并不是直接访问stu对象的成员变量age,而是编译器遇到int age = stu.age的时候会自动将代码展开成int age = [stu age]

3)OC点语法的本质是方法调用,不是直接访问成员变量。至于这个点语法代表的是get方法还是set方法,那就取决于你是取值还是设值(也可以理解为点语法是在“=”的左侧还是右侧,左侧:如 stu.age=.... 这就是调用set方法,右侧 ... = stu.age 这就是调用get方法),取值就是get方法,设值就是set方法 


第二部分  点语法陷阱


1)OC中有个self关键字,作用跟this关键字类似。我这么说完,可能有人就会想这样写OCset方法了

- (void)setAge:(int)newAge {

self.age = newAge;}

这绝对是错误的,会造成死循环。因为我在前面已经说过了,OC点语法的本质是方法调用,所以上面的代码相当于

- (void)setAge:(int)newAge {

[self setAge:newAge];}

下面的使用方式也是一个死循环:2)在get方法中,return self.age;相当于是[self age];



第三部分  点语法注意

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

特别注意:点语法的本质是转换成相应的setget方法,如果没有setget方法,则不能使用点语法。 


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

【c】c语言语法知识点总结 1

1.这样的初始化有什么问题?char *p = malloc(10); 编译器提示“非法初始式” 云云。答:这个声明是静态或非局部变量吗?函数调用只能出现在自动变量(即局部非静态变量) 的初始式中。因...

黑马程序员_ios基础总结6_C语言基本语法五

黑马程序员_ios基础总结6_流程控制黑马程序员_ios基础总结6_流程控制
  • audered
  • audered
  • 2014年02月20日 08:18
  • 698

c语言语法陷阱总结

学习C语言也有一段时间了,关于语法上的错误,现在基本上也没犯过,不过,我还是想小结一下。一、优先级问题运算优先级的问题,其实在背乘法表,的时候就已经开始接触了。那时候我们知道在加减乘除的混合运算中,先...

ARM7相关编程之c语言相关语法的书写格式总结

关于对寄存器的读写方式 一直听说对寄存器赋值的时候,最好的方式是通过读修改写的方式,本人一直觉得直接赋值并没有什么不可以,直到今天,在lpc2138芯片下,在一个已经能够驱动2.2 TFT液晶显示汉...
  • moluoyu
  • moluoyu
  • 2015年06月02日 20:27
  • 310

C语言基本语法总结

C语言总结(基本语法): 一.基本语法: 《1》C语言程序由函数构成 — C程序的入口:main函数 《2》C程序运行步骤:     编写代码:(.C源文件)     编译:编译源文件生...

C语言语法总结

1.C语言的数据类型 基本类型    a.整型:       整型 int   Visual c++6.0 中占4 个字节; Turbo c 2.0占 2个字节 取值:-2147483648 -...
  • juyon
  • juyon
  • 2011年10月04日 12:05
  • 7985

黑马程序员——黑马IOS面试学习二:C语言语法总结——黑马 ios 技术博客

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1.C语言的数据类型 基本类型    a.整型:       整型 int   ...

黑马程序员_iOS开发C语言基础基本语法易错点

1、浮点数float和double的区分 比

C语言基本语法

  • 2016年01月13日 16:05
  • 81KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言 点语法的总结
举报原因:
原因补充:

(最多只允许输入30个字)