点语法与self关键字
2018-11-02 本文已影响0人
SimpleSJ
1.点语法
- 如果给属性提供了getter和setter方法, 那么访问属性就又多了一种访问方式 , 点语法
- 点语法是一个编译器的特性, 会在程序翻译成二进制的时候将.语法自动转换为setter和getter方法
- 其实点语法的本质还是方法调用
-
当使用点语法时,编译器会自动展开成相应的方法
image.png - 当点语法使用在 “=“赋值符号左侧的时候,点语法会被展开为setter方法的调用,其他情况(等号右侧、直接使用)为点语法展开为getter方法的调用
注意点
-
点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开成相应的方法调用。
-
切记点语法的本质是转换成相应的对setter和getter方法调用,如果没有set和get方法,则不能使用点语法。
-
不要在getter 与 setter方法中使用本属性的点语法
2.self关键字
-
谁调用self所在的方法,那么self就是谁
-
self在类方法中,就是这个类的类对象,全局只有一个,可通过self调用本类中的其他类方法,但是不能通过self来调用对象方法或访问成员变量
-
self在对象方法中,就是调用这个方法的那个对象, 可以通过self调用本类中其他的对象方法,访问成员变量,但不能通过self调用本类的类方法。
-
通过self调用方法的格式:[self 方法名];
-
通过self访问成员变量格式:self->成员变量名
注意点
- 同时有对象方法和类方法存在的时候,self不会调错
- self只能在方法中使用;不要使用self来调用函数,也不可以在函数内部使用self;
- 使用self调用本方法,导致死循环调用。