Category可以為已存在的類添加方法疗认,包括系統(tǒng)類清笨,原則不能添加屬性,但添加不會報錯溪猿,可是不能使用钩杰,要想用的話可以結(jié)合runtime使用
#import "Person.h"
@interface Person (Percate)
//分類中寫了屬性,用runtime機制實現(xiàn)setter、getter方法
@property(nonatomic,copy)NSString*str;
@end
.m文件中
#import "Person+Percate.h"
#import <objc/runtime.h>
static NSString *strKey=@"strKey"; //一個屬性定義一個
@implementation Person (Percate)
-(void)setStr:(NSString *)str{
? ? objc_setAssociatedObject(self, &strKey, str,OBJC_ASSOCIATION_COPY);
? ? /*
? ? strong修飾的類型用 OBJC_ASSOCIATION_RETAIN_NONATOMIC
? ? copy? 修飾的類型用 OBJC_ASSOCIATION_COPY
? ? assin 修飾的類型用 OBJC_ASSOCIATION_ASSIGN
? ? */
}
-(NSString*)str{
? ? return objc_getAssociatedObject(self, &strKey);
}
這樣就可以正常使用了
有些為系統(tǒng)類添加的分類如:NSString再愈、NSDate榜苫、UIImage、UILabel等不想在使用引入分類的頭文件翎冲,那么可以把這些分類的頭文件寫在pch文件中