//再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用.
类的扩展:为类添加新的特征(属性)或者方法
对已知类:
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
版权声明:本文为博主原创文章,未经博主允许不得转载。