91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

通過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

通辽市| 达州市| 交城县| 阿荣旗| 迭部县| 肥乡县| 禄丰县| 郓城县| 金坛市| 和硕县| 丹凤县| 山东省| 汽车| 太仓市| 昌都县| 武汉市| 大城县| 淅川县| 阿克苏市| 房产| 大丰市| 屏南县| 蕉岭县| 巴中市| 舟曲县| 青铜峡市| 连云港市| 宜君县| 九江县| 湖州市| 登封市| 云浮市| 枣庄市| 泗阳县| 娱乐| 岢岚县| 唐海县| 府谷县| 礼泉县| 罗源县| 五河县|