类目,延展,协议的基本概念

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类目,延展,协议的基本概念相关的知识,希望对你有一定的参考价值。

Catgory(类目/分类
    1.分类是给原有类添加方法,它只能添加方法,不能添加属性(成员变量)
    2.分类中定义@property,只会生成setter/getter方法的声明,没有方法的实现以及私有变量。
    3.分类中的方法不能和本类的方法名相同,否则会有警告,而且调用的时候会优先调用分类的方法,即覆盖本类的方法。  
    4.分类的方法和实现分开,一对多,1个.h文件对应多个.m文件,典型的分散实现;
延展(Extension)
 1.延展为类创建私有方法,一个.m文件对应多个.h文件,分配权限时可以用(想用哪一个,就导入哪一个头文件)
协议(protocol)
1.协议相当于其它语法里的接口(抽象类)它只有声明没有实现。它可以声明一些必须实现的方法(默认的是必需实现required),也可以声明一些不一定实现的方法(@ optional)协议是谁遵循谁实现。一个类可以遵循多个协议,一个协议也可以遵循其他协议(多继承)。
2.判断对象是否遵循协议confromsToprotocol,是否实现协议:respondsToSelector.
protocol和继承的区别:1.继承之后默认就有实现,而property只有声明没有实现。2.相同类型的类可以用继承,但是不同类型的类只能使用property。3.property可以用于存储方法的声明,可以将 多个类中共同的方法抽取出来,以后让这些类遵守协议即可。
3.协议的的应用场景:类型的限制,可以将协议写在数据类型的右边,明确的标注如果想给该变量赋值,那么该对象必须遵守某个协议。
Persong<protocol> *w = [Person new];@property (strong nonatomic) Wife<protocol> *wife;类型限定写在数据类型的右边
1.当A对象想监听B对象的一些变化是,可以使用代理设计模式2.当B对象发生一些事情,想通知A对象的时候,可以使用代理模式。当A对象无法处理某些事情时,想让B对象帮忙处理。

以上是关于类目,延展,协议的基本概念的主要内容,如果未能解决你的问题,请参考以下文章

iOS类目延展和协议

OC 中 类目延展和协议

iOS设计之--OC学习总结之延展类目协议

Objective-C中的类目,延展,协议

Category基本概念

Objective-C中的类目(Category),延展(Extension)