在java中想让类 “具有新的功能” 通常采用继承来实现 ,oc中可以使用类别(category)为已有的类添加新的方法,注意是为任何已有类(包括系统提供的NSObject , NSString 等等),类别不是继承,更像是直接修改了源码
例如:
#import <Foundation/Foundation.h>
// 为NSString新增方法,()中任意合法标示符即可
@interface NSString (Young)
-(void)newMethod:(int)val;//声明新增的方法
@end
//实现时同样声明NSString(Young)
@implementation NSString(Young)
-(void)newMethod:(int )val{
NSString* s= @"新增方法 ";
s= [s stringByAppendingFormat:@"%@ %d",self,val];
NSLog(s);
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
NSString* s1= [[NSString alloc]initWithUTF8String:"new string"];
[s1 newMethod:1];
NSString* s2=@"string pool";
[s2 newMethod:2];
}
return 0;
}
2015-09-20 11:06:54.437 testt[579:22088] 新增方法 new string 1
2015-09-20 11:06:54.438 testt[579:22088] 新增方法 string pool 2