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语言学习总结(一)

在千锋IOS培训的第一阶段结束了,回顾这段时间还是很有收获的。有时候我会想,相对与我的大学生涯相比,我对C语言对OOP思想都有了更深的理解和使用技巧,在能力上还是有长进的。如下做各章节知识点回顾,完全...
  • yangbo_hbzjk
  • yangbo_hbzjk
  • 2012年11月16日 16:07
  • 1312

c语言课程总结

这个星期的c语言课程学习结束了,学习c是因为很多语言都具有c的影子,作为前端学习,虽然不是后端,但是对后端语言的学习也是必不可少的,而且前端学习涉及的东西太广泛,所以,拥有一个编程的思维,和一个良好的...
  • qq535972008
  • qq535972008
  • 2015年09月23日 14:35
  • 727

C语言学习总结(五)——C库函数总结

C 库函数主要指那些由美国国家标准协会(ANSI)或国际标准化组织(ISO)发布的标准中规定的库函数,按照标准 C 的要求来进行 C 语言编程是很重要的,因为这样你的代码才有可能跨平台使用。 最...
  • myintelex
  • myintelex
  • 2016年12月26日 18:22
  • 535

C语言总结-个人学习笔记

C语言总结l         对浮点类型数据的处理1.         进行大小比较:直接比较可能产生不精确现象,可用极限思想,fabs( a – b ) ε,但要小心处理好精度,因为当数字很大时可能...
  • stephane
  • stephane
  • 2008年03月11日 00:16
  • 566

C语言基础知识梳理总结

C语言是当代人学习及生活中的必备基础知识,应用十分广泛,下面为大家带来C语言基础知识梳理总结,C语言零基础入门绝对不是天方夜谭!...
  • g984160547
  • g984160547
  • 2017年03月06日 09:54
  • 4145

C语言结构体小结

在学习C语言的过程中,很多新手会觉得结构体并没有什么卵用,C语言内置的数据类型int呀,double呀已经可以解决我们所碰到的大部分编程问题,然而生活不是编程题,它会给你各种各样用内置数据类型解决不了...
  • wcr972336983
  • wcr972336983
  • 2015年09月22日 16:57
  • 138

C语言结构体总结

 结构体专题 02、点操作和指针操作本质研究 void main() {          Teacher t1;     ...
  • wu5215080
  • wu5215080
  • 2014年09月01日 20:43
  • 892

C语言程序设计学习总结

最近忙于学习C语言程序设计,考计二C。都搞得我头晕眼花,天天都是刷题。马上就要考计二C了。我想总结一下我对C语言的理解。 C不同于java的最大区别在于C是面向过程,而java是面向对象。刚开始我也搞...
  • qq_35542689
  • qq_35542689
  • 2017年03月23日 15:57
  • 1362

黑马程序员_C语言数组的总结

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 1、数组总括 含义:将相同类型的若干变量按照有序的形式组织起来,就是数组...
  • moonfoot
  • moonfoot
  • 2015年05月09日 22:55
  • 239

OC点语法和箭头的区别

OC点语法和箭头的区别
  • Ashimar_a
  • Ashimar_a
  • 2016年06月06日 13:43
  • 442
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言 点语法的总结
举报原因:
原因补充:

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