您的位置:首页 > 移动开发 > IOS开发

iOS——分类 延展 协议

2015-12-28 19:52 281 查看
一 分类

继承:可以完成对类型的扩充,不仅能够添加方法,也能添加实例变量

* 缺点:如果工程中有很多需要扩充类的使用,此时要用子类去完成替换,工作量非常大,还容易出错


使用Category 分类或者类目的主要作用是为没有源代码的类添加方法

// 谨记:使用Category给类添加方法可以,但是不能添加实例变量

// 添加分类的步骤:

1. 新建文件,command + n

2. 选择Objective-C File 模板

3. file栏根据扩展的功能,写入文件名

4. 中间栏选择Category

5. Class 选项写入对哪个类的扩充,就写入那个类的类名

6. next之后会自动生成一对 “ 类名+扩展名.h” 和“ 类名 + 扩展名.m”的文件

7. 在.h文件中写入方法的声明

8. 在.m文件中写入方法的实现

创建分类的时候



分类不仅可以添加类方法,也可以添加对象方法,实例变量不能定义在分类中

使用分类添加的方法,是直接作用当前那个类上的,可以使用当前类或者当前类创建的对象直接调用方法

// 如果在分类中定义了和原始类中一样的方法,此时优先选择执行分类中的方法

不正式的添加分类的方法:

在 .h 文件中直接添加一个分类文件:



在.m文件中:



二 延展

用来管理一个类的私有方法

//给一个类添加延展的步骤:

1.新建文件command + n

2.选择Objective-C File模板

3.第一个file栏写入延展名 private

4.中间栏 选择 Extension

5.Class对哪个类延展就写哪个类的类名

6.此时只生成.h文件

7.然后到类的.m文件中写类的延展的实现,前提引入延展的头文件

注意:延展中是可以添加实例变量的(此时变量也是私有的)

延展针对的是可以看到源文件的类

延展和分类的区别:

延展中可以添加实例变量

延展中的方法和实例变量都是私有的,外界不能访问,分类中的方法外界可以访问

延展针对的是已知类(因为它的实现只能在这个类的 .m 文件中写),而分类可以为不知道源文件的类添加方法

延展中的内容子类不能继承,分类中的方法子类可以直接使用

三 协议

代理设计模式的由来:自己不想干,找别人干

代理设计模式的步骤:

* 制定协议
* 寻找代理
* 遵循协议
* 成为代理
* 执行协议中的方法
* 告诉代理什么时候开始工作

制定协议的步骤:
1.command + n 新建文件
2.文件名(类名 + delegate)eg:为Person类制定协议: PersonDelegate
3.中间栏选 Protocol
4.Class 哪个类制定的协议就选哪个类
5.只生成 .h 文件
6.谁成为代理就去谁的 .m 文件中写协议的方法实现


创建协议文件之后,可以进一步修饰

第一种:用 required修饰协议内容: 一旦用required修饰之后就必须要被实现,否则崩溃

第二种:用optional修饰,他是可选择实现,也就是选择性的,不强制实现

// 一个类向要成为代理,必须要遵循协议的位置,写在其父类的后面,使用一对尖括号即可
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: