码迷,mamicode.com
首页 > 其他好文 > 详细

Delegate、Category、Extension

时间:2015-04-06 16:53:56      阅读:104      评论:0      收藏:0      [点我收藏+]

标签:

Delegate

是把一个类自己需要做的一部分事情,让另一个类(也可以就是自己本身)来完成。 
delegate的方法在被委托的类中必须实现。

设计模式中的委托模式。

Category

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

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

设计模式中的策略模式。

Extension

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

Delegate、Category、Extension

标签:

原文地址:http://www.cnblogs.com/someone617-blog/p/4396046.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!