亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

通過OC運行時(runtime)獲得類的屬性列表

發布時間:2020-07-10 17:02:57 來源:網絡 閱讀:1926 作者:zlayne 欄目:開發技術

        最近一段時間在研究OC的運行時機制,碰到一個叫property_getAttributes函數,再此對其用法進行簡單的總結。

        property_getAttributes主要用于獲取一個類的property即該property的屬性數據,也叫metadata(元數據),涉及到得運行時函數包括class_copyPropertyList,property_getName和propert_getAttributes


大體用法如下:

#import <objc/runtime.h>
......
- (void)custom{
    unsigned pCount;
    objc_property_t *properties=class_copyPropertyList([self class], &pCount);//屬性數組
    for(int i=0;i<pCount;++i){
        objc_property_t property=properties[i];
        NSLog(@"propertyName:%s",property_getName(property));
        NSLog(@"propertyAttributes:%s",property_getAttributes(property));
    }
}

具體用法如下:

eg.定義了一個類CustomClass,有屬性定義如下

頭文件:

CustomClass.h
#import <objc/runtime.h>
......
@property (nonatomic, strong)NSString *myName;

實現文件:

CustomClass.m
@synthesize myName;
- (void)printAllAttributes{
    unsigned pCount;
    objc_property_t *properties=class_copyPropertyList([self class], &pCount);//屬性數組
    for(int i=0;i<pCount;++i){
        objc_property_t property=properties[i];
        NSLog(@"propertyName:%s",property_getName(property));
        NSLog(@"propertyAttributes:%s",property_getAttributes(property));
    }
}

最后的輸出結果如下:

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,即若為基本數據類型,則只是@encode(int)的值i

&:表明property為retain(strong),除此之外,C表示copy,assign沒有表示。

N:表示nonatomic,若為atomic則不寫。

VmyName:V開頭加property名

此外,讀寫屬性:readonly表示為R,readwrite不寫。





向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

昌吉市| 社会| 恩平市| 进贤县| 响水县| 潮安县| 泸水县| 和硕县| 广东省| 景德镇市| 林西县| 武邑县| 塘沽区| 越西县| 莱阳市| 寻甸| 孟州市| 绥化市| 阳朔县| 温宿县| 桦川县| 怀化市| 综艺| 怀安县| 吉首市| 南漳县| 自治县| 榆社县| 镇江市| 临泉县| 依安县| 浑源县| 佳木斯市| 鄂托克旗| 鄂温| 肃北| 荔浦县| 金寨县| 昌吉市| 菏泽市| 灵璧县|