objective-c category

刘承运
2023-12-01

在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


 类似资料: