A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

一.实例变量的可见度:一共有三种(@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等变量的用法一样,然后普通对象那样进行操作即可.

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马