分類添加屬性,運行時添加對象屬性和基本類型屬性

<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">一般分類(Category)是不允許添加屬性的,只能進行方法的擴展,分類中不會自動生成set和get方法,更不會出現_object這樣的屬性名。運行時能幫我們解決這個問題,自己添加set和get的方法。本文將介紹對象屬性和基本類型屬性兩種運行時代碼的添加。(其實只需要把基本類型轉換爲對象就可以了)</span><span style="font-family: Arial, Helvetica, sans-serif;">	</span>


都是要在.m文件中添加運行時頭文件的。

#import <objc/runtime.h>



1、對象屬性的添加:

<span style="font-size:24px;">@property(nonatomic,strong)NSString* test;</span>

定義char *類型的標誌符:

static char* testStr = "TESTSTR";

運行時的set和get代碼:

- (void)setTest:(NSString *)test{

    objc_setAssociatedObject(self, testStr, test, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

}


- (NSString *)test{

    return objc_getAssociatedObject(self, testStr);

}



2、基本類型添加


@property(nonatomic,assign)int weight11;

static char strKey = 'k';

- (int)weight11{

    return [objc_getAssociatedObject(self, &strKey) intValue];

}


- (void)setWeight11:(int)weight11{

    return objc_setAssociatedObject(self, &strKey, @(weight11), OBJC_ASSOCIATION_ASSIGN);

}



好了,用法就是這樣,至於想了解內部,慢慢來吧。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章