您的位置:首页 > 编程语言 > Go语言

Category和Extension的使用

2015-11-03 15:40 393 查看
Category:
动态的给已经存在的类添加新功能,可以使类的原始设计保持很小,在需要添加功能的时候再逐步的增加类的方法,类扩展也经常作为类的私有函数使用。不能添加实例变量。

注意:定义类目的文件名规则:类名 + 类目名称,如NSString+Name

@interface NSString (Extension)
- (BOOL)validateEmail;

//覆盖NSString中的intValue方法
- (NSInteger)intValue;

@end

优势:
1.对现有的类进行扩展。
2.作为子类的替代,不需要定义和使用一个子类可通过类目直接向已有的类里增加
方法。

3.对你类中的方法进行归类,利用category吧一个庞大的类划分为小块来分别进行
开发,从而更好的对类中的方法进行更新和维护。
4.和普通接口有所区别的是,在category的实现文件中的实例方法只要你不去调
用,可以不用实现所有声明的方法。

局限性:
1.不能添加实例变量
2.名称冲突,类别中的方法与现有的方法重名时,类别具有更高的优先级,完全取
代初始方法。

demo下载地址:下载demo
Extension:
通知在本类的定义里使用类目来声明私有方法,可以看作是一种匿名的类目。类有时需要一些只为自己所见、所用的私有方法,这种私有方法可以通过延展的方式来声明,定义的方法在类本身的@implementation代码区域中进行实现。
@interface MyObject : NSObject
- (NSNumber *)number;

@end
@implementation MyObject
- (NSNumber *)number
{
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: