类目,延展,协议的基本概念
2016-03-02 21:42
232 查看
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对象帮忙处理。
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对象帮忙处理。
相关文章推荐
- 选择Web API还是WCF
- 205_IsomorphicStrings
- Java中内存分配及堆栈比较
- dmesg
- Java 9终于要包含Jigsaw项目了
- Leetcode: 328. Odd Even Linked List(JAVA)
- Java 9终于要包含Jigsaw项目了
- SLua 优化初始化速度
- 12C ORA-错误汇总10 ORA-12500 to ORA-19400
- 基于XML配置的springMVC小案例
- jstl 简单实践
- 求两帧图像或着视频的光流(optical flow)
- iOS-App installation failed原因及解决方法
- 实现strcmp(字符串比较)
- 半年没有写工作周报,于是老板把我开除了
- C++练手之计算老妈的工作时间段
- 使用Apriori算法进行关联分析
- web前端html+css基础 项目实例
- 4407: 于神之怒加强版 莫比乌斯反演+线性筛积性函数
- ios开发之多线程NSThread