iOS——分类 延展 协议

一 分类

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

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

使用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文件中写类的延展的实现,前提引入延展的头文件
注意:延展中是可以添加实例变量的(此时变量也是私有的)
延展针对的是可以看到源文件的类

延展和分类的区别:

  1. 延展中可以添加实例变量
  2. 延展中的方法和实例变量都是私有的,外界不能访问,分类中的方法外界可以访问
  3. 延展针对的是已知类(因为它的实现只能在这个类的 .m 文件中写),而分类可以为不知道源文件的类添加方法
  4. 延展中的内容子类不能继承,分类中的方法子类可以直接使用

三 协议

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

代理设计模式的步骤:

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


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

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

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

第二种:用optional修饰,他是可选择实现,也就是选择性的,不强制实现
// 一个类向要成为代理,必须要遵循协议的位置,写在其父类的后面,使用一对尖括号即可

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值