OC基础:类的扩展.协议
2015-06-22 19:22
330 查看
//再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用.
类的扩展:为类添加新的特征(属性)或者方法
对已知类:
1.直接添加
2.继承(在其子类中添加实例变量和方法)
3.使用extension(对私有方法和私有属性的扩展(未在.h中申明的方法就是私有方法))
// extension
// 一般我们把类的延展直接写在类的.m文件中
// extension 对私有方法和私有属性的扩展(未在.h中申声的方法)
// 对已知类扩充私有方法,选择 Objective - C file
// 使用时要把头文件引入,类的延展里可以添加类的实例变量
对未知类:
category 分类,类名,为没有源代码的类添加方法,不能添加实例变量
总结:extension 和 category
1.extension为已知类添加私有属性和私有方法.category为没有源代码(未知类)的类添加方法.
2.extension可以添加实例变量(属性),category不能添加实例变量.
3.extension文件可有.h文件, category同时生成一对.h和.m文件
4.extension一般不写代码,写在类的.m文件
总结: category 和 subclass(子类)
1.category只能为类添加方法,subclass既能为类添加方法又能添加实例变量
2.category新添加的方法成为类的一部分,能被子类继承,subclass新添加的方法只有子类才有,父类不具有
3.category使用原始类的实例(-)或者原始类的调用方法(+),subclass只有子类才能使用
-------------------------------------Protocol 协议-----------------------------------------
只要遵守了协议即可成为代理
代理:自己不想干的事情让比人去做,别人充当的就是代理
如果一个类想要遵守一个协议,直接在.h文件中的父类后加<协议名>在协议里面,写必须遵守的方法和可选择遵守的方法
如:
@protocol BoyfriendProtocol <NSObject>
@required //必须实现的方法
-(void)makeMoney;
@optional //可选择的实现
-(void)cook;
//做饭
-(void)clean;
//清洁
-(void)funny;
//幽默
@end
类的扩展:为类添加新的特征(属性)或者方法
对已知类:
1.直接添加
2.继承(在其子类中添加实例变量和方法)
3.使用extension(对私有方法和私有属性的扩展(未在.h中申明的方法就是私有方法))
// extension
// 一般我们把类的延展直接写在类的.m文件中
// extension 对私有方法和私有属性的扩展(未在.h中申声的方法)
// 对已知类扩充私有方法,选择 Objective - C file
// 使用时要把头文件引入,类的延展里可以添加类的实例变量
对未知类:
category 分类,类名,为没有源代码的类添加方法,不能添加实例变量
总结:extension 和 category
1.extension为已知类添加私有属性和私有方法.category为没有源代码(未知类)的类添加方法.
2.extension可以添加实例变量(属性),category不能添加实例变量.
3.extension文件可有.h文件, category同时生成一对.h和.m文件
4.extension一般不写代码,写在类的.m文件
总结: category 和 subclass(子类)
1.category只能为类添加方法,subclass既能为类添加方法又能添加实例变量
2.category新添加的方法成为类的一部分,能被子类继承,subclass新添加的方法只有子类才有,父类不具有
3.category使用原始类的实例(-)或者原始类的调用方法(+),subclass只有子类才能使用
-------------------------------------Protocol 协议-----------------------------------------
只要遵守了协议即可成为代理
代理:自己不想干的事情让比人去做,别人充当的就是代理
如果一个类想要遵守一个协议,直接在.h文件中的父类后加<协议名>在协议里面,写必须遵守的方法和可选择遵守的方法
如:
@protocol BoyfriendProtocol <NSObject>
@required //必须实现的方法
-(void)makeMoney;
@optional //可选择的实现
-(void)cook;
//做饭
-(void)clean;
//清洁
-(void)funny;
//幽默
@end
相关文章推荐
- 02-线性结构3. 求前缀表达式的值(25)
- OC基础:类的扩展.协议 分类: ios学习 OC 2015-06-22 19:22 34人阅读 评论(0) 收藏
- socket.io + nodes 实现webSocket消息提醒
- linux rsync +inotify 实现 实时同步
- uva 11985
- ETL架构师面试题(这篇文章太棒了)
- 思科路由器PPOE client+NAT解决地址回流问题测试 推荐
- 深入java 多线程线程间的同步
- 面试题总结1
- 黑马程序员---MAC OS X系统终端常用命令
- C实现 LeetCode->Insertion Sort List(排序)(单链表)
- doxygen如何调用graphviz查看cocos2dx源码
- 【prufer编码】BZOJ1430 小猴打架
- 不定高度的div背景或背景图片不显示问题
- 涨姿势一下:#include<>和#include""的区别
- 静态路由小特性配置
- OC基础:Date
- java概述 部分重要知识(个人理解)
- OC基础:Date 分类: ios学习 OC 2015-06-22 19:16 158人阅读 评论(0) 收藏
- 求1-n中数字出现的次数