(一)Category作用:Category可以向已存在的类添加新的方法,或者覆盖原来类中已经存在的方法,从而扩展已有类(在Java中为了实现类似功能,一般是创建子类)
(二)Category例子:使用Category,为NSString类添加一个判断字符串是否只包含数字的方法。
(1) 如图1、图2,新建一个扩展NSString类的Category
图1
图2
(2)在.h文件声明方法需要增加的方法:
#import <UIKit/UIKit.h>
@interface NSString (JXString)
-(BOOL)isAllNumber;
@end
(3)在.m文件实现新增的方法:
#import "NSString+JXString.h"
@implementation NSString (JXString)
-(BOOL)isAllNumber{
NSString *baseStr = @"1234567890";
BOOL isVaild = YES;
for (int i=0; i<self.length; i++) {
NSRange range = [self rangeOfComposedCharacterSequenceAtIndex:i];
NSString *s = [self substringWithRange:range];
if ([baseStr rangeOfString:s].location == NSNotFound) {
isVaild = NO;
}
}
return isVaild;
}
@end
#import "ViewController.h"
#import "NSString+JXString.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
NSLog(@"%@",[@"hello world" isAllNumber]?@"YES":@"NO");
NSLog(@"%@",[@"12332112" isAllNumber]?@"YES":@"NO");
NSLog(@"%@",[@"abc789" isAllNumber]?@"YES":@"NO");
}
@end
结果: