Delegate、Category、Extension

Delegate

是把一个类本身须要作的一部分事情,让另外一个类(也能够就是本身自己)来完成。 
delegate的方法在被委托的类中必须实现。设计模式

设计模式中的委托模式。ide

Category

即便在你不知道一个类的源码状况下,向这个类添加扩展的方法。ui

经过在interface中声明一个额外的方法而且在implementation 中定义相同名字的方法便可,没必要实现。分类的名字(括号括起来)表示的是:对于声明于其余地方的这个类,在此处添加的方法是额外的,而不是表示这是一个新的类。你不能够经过分类为一个类添加额外的成员变量。虽然Category不可以为类添加新的成员变量,可是Category包含类的全部成员变量,即便是@private的。Category能够从新定义新方法,也能够override继承过来的方法。要添加额外方法,分类必须在第一个@interface中声明方法。设计

设计模式中的策略模式。继承

Extension

类扩展就像匿名(没有那个括号里面的名字)的分类同样,除了同样不一样的是,类扩展声明必须在@implementation在实现。 
类扩展中添加的方法是一个required API,若是不去实现,编译器会警告,并且这个方法的声明能够不在第一个@interface中去声明。编译器

相关文章
相关标签/搜索