引述
作為iOS開發(fā)者的我們都知道鸽凶,分類是不能直接添加屬性的,那么我們有時候又需要實(shí)現(xiàn)這個功能建峭,那么我們應(yīng)該怎么辦才能為分類添加上屬性呢玻侥。
Runtime給分類添加屬性原理
給一個類聲明屬性,其實(shí)本質(zhì)就是給這個類添加關(guān)聯(lián)亿蒸,并不是直接把這個值的內(nèi)存空間添加到類存空間凑兰。
Runtime給分類添加屬性步驟
1.在分類的.h文件中聲明想要定義的屬性
2.在分類的.m文件中實(shí)現(xiàn)getter和setter方法
3.引入runtime頭文件,然后在setter方法中用objc_setAssociatedObject關(guān)聯(lián)對象
objc_setAssociatedObject(self, @"age", age, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
參數(shù)說明:
// object:給哪個對象添加屬性
// key:屬性名,根據(jù)key去獲取關(guān)聯(lián)的對象 ,void * == id
// value:關(guān)聯(lián)的值
// policy:策略
- 4.在getter方法中根據(jù)關(guān)聯(lián)的key边锁,獲取關(guān)聯(lián)的值姑食。
return objc_getAssociatedObject(self, @"age");
- 5.在需要使用的地方引入分類的頭文件,然后即可用 .語法來獲取值茅坛。
NSObject *objc = [[NSObject alloc] init];
objc.age = @"123";
NSLog(@"%@",objc.age);
效果展示:
Demo下載地址
Runtime添加屬性Demo
廣大書友記得給個好評音半,在GitHub上給個Star噢!