1.实例变量的可见度:一共有三种
@public:公共的,在任何文件中都可以访问,(访问方式是通过对象+指向操作符 + 实例变量,例如:per->name)
@protected:受保护的,有一定的访问权限,只允许在本类文件以及子类文件中访问,其他文件不可以访问
@private:私有的,只允许在本类文件中访问,不可以在子类文件以及其他文件中访问
默认的可见度是:@protected
为什么不声明为@public?
(1).声明为:@public 实例变量,外部可以访问以及修改,会影响到内部的一个实现,暴漏实现细节
(2).违背oc面向对象的三大特性之一:封装.(封装的思想是隐藏内部的实现,提供外接访问的接口)
为什么不声明为@private?
(1).声明为:@private的实例变量,子类文件访问不到,所以子类文件还需要重新定义声明.
(2).违背了oc面向对象的特性之一:继承 (父类有的东西,子类也有,可访问)
2.设置器 setter方法 与访问器 getter方法 的运用
3.文件和类的关系:文件和类没有直接关系,文件可以存放多个类,只要类符合接口部分和实现部分的定义格式就可以.但一般情况下,一个文件就定义一个类.
4.self的使用:谁调用该方法,self就代表谁.
当方法是一个 - 号方法时,调用该方法的对象是谁,self就代表当前对象
当方法是一个 + 号方法时,调用该方法的类是谁,self就代表当前类
5. + 方法中不能使用实例变量,实例变量是依托于对象存在的,只有有了对象,实例变量才会有空间.
6.循环导入问题:当导入头文件时,相当于把里面东西都复制一份,而当使用这个类时,这个类还没定义,因此,不能识别.
解决方案:在.h文件中使用@class,将类声明为一个字符串,但是它不具备类中的内容,因此,需要在.m文件中再将头文件导入即可.