OC基础:类的扩展.协议 分类: ios学习 OC 2015-06-22 19:22 34人阅读 评论(0) 收藏

//再设计一个类的时候,有些方法需要对外公开(接口),有些仅供内部使用.

类的扩展:为类添加新的特征(属性)或者方法

对已知类:

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




版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/shaoting/p/4619815.html