在ios開發(fā)中践惑,分類的概念我們都很熟悉厢漩,通常我們會利用分類來給一個類添加一些額外的方法,添加方法的操作和平時在類中添加方法的操作一致籽孙,這里就不再贅述。下面我們來說說怎樣在分類中添加屬性:
添加屬性可以再分類的.h文件中來添加火俄,也可以再.m文件中的匿名分類中添加犯建,我們像添加普通屬性一樣添加分類屬性,這是編譯器不會報任何的異常瓜客,但是當使用到這些分類屬性的時候會導致程序崩潰适瓦,為了解決這個問題,我們需要用到runtime運行時谱仪。
舉個栗子:
添加的分類屬性如下:
@property (nonatomic, copy) NSString *title;
添加運行時頭文件
#import <objc/runtime.h>
然后重寫屬性的set和get方法
// 定義屬性的Key
static NSString *titleKey = @"titleKey";
- (void)setTitle:(NSString *)title
{
objc_setAssociatedObject(self, &titleKey, title, OBJC_ASSOCIATION_COPY);
}
- (NSString *)title
{
return objc_getAssociatedObject(self, &titleKey);
}
objc_setAssociatedObject方法中犹菇,有四個參數(shù),分別是:源對象芽卿,關聯(lián)時的用來標記是哪一個屬性的key(因為你可能要添加很多屬性)揭芍,關聯(lián)的對象和一個關聯(lián)策略。
重寫完set和get方法后卸例,就可以正常使用了称杨。