本文学习整理自文顶顶博客园
一、点语法
1、点语法的作用
OC设计点语法的目的,是为了让其他语言的开发者可以很快的上手OC语言开发
使用点语法,让它和其他面向对象的语言(如java语言)
2、点语法的本质
(1)点语法的本质是方法的调用,而不是访问成员变量,当使用点语法时,编译器会自动展开相应的方法。
(2) 切记,点语法的本质是转换成相应的set和get方法,如果没有set和get方法,则不能使用点语法。
(3) 编译器如何知道是set方法还是get方法,主要是看赋值
Stu.age = 10; // [stu setAge: 10]; set
int a = stu.age; // [stu age]; get
(4)在OC中访问成员变量只有一种方式-----即使用“——>” 如 stu—>age,这种情况要求在@public的前提下。
3、点语法的使用注意
死循环:
(1)在set方法中,self.age = age; 相当于 [self setAge:age];
(2)在get方法中, return self.age; 相当于[self age];
二、变量的作用域
1、变量的作用域主要分为四种
(1)@public 公有的 在有对象的前提下,任何地方都可以直接访问
(2)@protected 保护的 只能在当前类和子类的对象方法中访问
(3)@private 私有的 只能在当前类的对象方法中才能直接方法
(4)@package 框架级别的 作用域介于私有和公开之间,只要处于同一个框架中就可以直接通过变量名访问
2、使用注意和补充
(1)在类的实现(.m)文件中也可以声明成员变量,但是因为在其他文件中通常都只是包含头文件(.h)而不会包含(.m)文件。所以在这里声明的成员变量是@private的。
在.m中定义的成员变量不能和头文件中的成员变量同名,在这期间使用@public等关键字也是徒劳的。
(2)在@interface @end 之间声明的成员变量如果不做特别的说明,那么默认是protected的。
(3)一个类继承了另一个类,那么久拥有了父类的所有成员变量和方法,注意所有的成员变量他都拥有,只是有的他不能直接访问。