最近一段時間在研究OC的運行時機制,碰到一個叫property_getAttributes函數(shù),再此對其用法進(jìn)行簡單的總結(jié)。
創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)沿河,十余年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):13518219792property_getAttributes主要用于獲取一個類的property即該property的屬性數(shù)據(jù),也叫metadata(元數(shù)據(jù)),涉及到得運行時函數(shù)包括class_copyPropertyList,property_getName和propert_getAttributes
大體用法如下:
#import...... - (void)custom{ unsigned pCount; objc_property_t *properties=class_copyPropertyList([self class], &pCount);//屬性數(shù)組 for(int i=0;i 具體用法如下:
eg.定義了一個類CustomClass,有屬性定義如下
頭文件:
CustomClass.h #import...... @property (nonatomic, strong)NSString *myName; 實現(xiàn)文件:
CustomClass.m @synthesize myName; - (void)printAllAttributes{ unsigned pCount; objc_property_t *properties=class_copyPropertyList([self class], &pCount);//屬性數(shù)組 for(int i=0;i最后的輸出結(jié)果如下:
2015-08-12 12:56:45.147 UIMenuController[1924:146558] propertyName:myName
2015-08-12 12:56:45.147 UIMenuController[1924:146558] propertyAttributes:T@"NSString",&,N,VmyName
解釋:
在上例中獲得propertyAttributes為:T@"NSString",&,N,VmyName
這是一個char *類型.
T:開頭字母
@"NSString":property的類型。@表示此property是OC類,"NSString"表明具體的OC類名。例如:
id myName;//@
UIColor *myName;//@"UIColor"
UITextField *myName;//@"UITextField"
CustomClass *myName;//@"CustomClass",為自定義類型
int myName;//i,即若為基本數(shù)據(jù)類型,則只是@encode(int)的值i
&:表明property為retain(strong),除此之外,C表示copy,assign沒有表示。
N:表示nonatomic,若為atomic則不寫。
VmyName:V開頭加property名
此外,讀寫屬性:readonly表示為R,readwrite不寫。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
網(wǎng)站名稱:通過OC運行時(runtime)獲得類的屬性列表-創(chuàng)新互聯(lián)
瀏覽地址:http://weahome.cn/article/dhhgoc.html