首页 > 代码库 > IOS_OC_Category
IOS_OC_Category
1.Category概述
那的Category的使用场景有那些呢:
1、类包括了非常多个方法实现,而这些方法须要不同团队的成员来实现
2、当你在使用基础类库中的类时,你不想继承这些类而仅仅想加入一些方法时。
Category能实现上面的需求,当然也有使用Category是须要注意的问题:
1、Category能够訪问原始类的实例变量,但不能加入实例变量,假设想加入变量,那就通过继承创建子类来实现。
2、Category能够重载原始类的方法,不大不推荐这么做,这样会覆盖掉原始类的方法。假设确实要重载。那就通过继承创建子类来实现。
3、和普通接口有所差别的是,在Category的实现文件里的实例方法仅仅要你不去调用它你能够不用实现全部声明的全部方法。
2.实例
@interface NSString (PLUS) - (int)numberCount; @end @implementation NSString (PLUS) - (int)numberCount { int count = 0; NSUInteger len = [self length]; for (int i=0; i<len; i++) { unichar ch = [self characterAtIndex:i]; if(ch>=‘0‘ && ch<=‘9‘){ count++; } } return count; } @end#import <Foundation/Foundation.h> #import "NSString+PLUS.h" //import int main(int argc, const char * argv[]) { NSString *s = @"ad7a8da9d9a1d1"; NSLog(@"%@ len = %d", s, [s numberCount]); return 0; }
3.类别的作用
(1)能够将类的实现分散到多个不同文件或多个不同框架中。方便代码管理。也能够对框架提供类的扩展(没有源代码,不能改动)。
(2)创建对私有方法的前向引用:假设其它类中的方法未实现,在你訪问其它类的私有方法时编译器报错这时使用类别。在类别中声明这些方法(不必提供方法实现),编译器就不会再产生警告
(3)向对象加入非正式协议:创建一个NSObject的类别称为“创建一个非正式协议”。由于能够作为不论什么类的托付对象使用。
IOS_OC_Category
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。