一.实例变量的可见度:一共有三种(@public,@protected以及@private) 1.他们之间的区别: @public:在任何文件中都可以访问,(访问方式是通过对象 +指向操作符+实例变量,例如:per->name) @protected:受保护的,有一定的访问权限,只允许在本类文件以及子类文件中访问,其他文件不可以访问. @private:私有的,只允许在本类文件中访问,不可以在子类文件以及其他文件中访问
2.其中系统默认的可见度为@protected,为什么不是@public和@private呢?其原因如下:
为什么不声明为@public? 1.声明@public的实例变量,外部就可以访问和修改,会影响内部的一个实现,暴露实现细节 2.违背了OC面向对象三大特性之一----封装.(封装的思想是影藏内部实现,提供外接访问的借口) 为什么不声明为@private? 1.声明为@pravate的实例变量,子类文件访问不到,所以子类文件还需要重新定义声明 2.违背了OC面向对象特性之一-----继承.(父类有的东西,子类也有,可访问) 二.设置器和访问器 1.设置器和访问器又称为setter方法和getter方法; 2.setter方法的特点: (1)他们都以减号方法开始; (2)返回值都为空; (3)只有一个参数. 三.循环导入问题
1.产生原因:
#import头文件时,会将头文件的内容复制一份,而当使用被导入的这个类时,该类还未定义,所以识别不了,典型的循环导入问题. 2.解决方案:
使用该类时不能把它当做一个类来使用,所以在.h文件中使用@class+要被导入的类名;将要被导入的类名命名为一个字符串再使用,但是它不具备类中的内容,所以需要在.m文件中#import "要被导入的类名.h"导入头文件 四.类的嵌套使用
自我感觉类的嵌套使用就是一个类中的对象的类型是另一个类,然后把另一个类的类名当作类型名来使用,就和普通的NNString等变量的用法一样,然后普通对象那样进行操作即可.
|