iOS-底層原理06-clang編譯后attribute屬性

《iOS底層原理文章匯總》

clang編譯后的attribute屬性

clang -rewrite-objc main.m -o main.cpp編譯后生成的main.cpp文件中含有attribute

@property(nonatomic,copy)NSString *nickName;
@property(nonatomic,strong)NSString *name;
attribute@2x.png
static struct /*_prop_list_t*/ {
    unsigned int entsize;  // sizeof(struct _prop_t)
    unsigned int count_of_properties;
    struct _prop_t prop_list[2];
} _OBJC_$_PROP_LIST_DCPerson __attribute__ ((used, section ("__DATA,__objc_const"))) = {
    sizeof(_prop_t),
    2,
    {{"nickName","T@\"NSString\",C,N,V_nickName"},
    {"name","T@\"NSString\",&,N,V_name"}}
}

查閱官方文檔

獲取某個(gè)對(duì)象的成員變量

       /*
        property_getAttributes(<#objc_property_t  _Nonnull property#>)
        class_copyPropertyList(<#Class  _Nullable __unsafe_unretained cls#>, <#unsigned int * _Nullable outCount#>)
         */
        unsigned int outCount, i;
        objc_property_t *properties = class_copyPropertyList(pClass, &outCount);
        for (i = 0; i < outCount; i++) {
            objc_property_t property = properties[i];
            fprintf(stdout, "%s %s\n", property_getName(property), property_getAttributes(property));
        }
//輸出
nickName T@"NSString",C,N,V_nickName
name T@"NSString",&,N,V_name
20.gif

打印出來(lái)的attribute分別代表什么呢?

T:type類(lèi)型 NSString 類(lèi)型

C:copy

N:nonatomic

V:variable變量

propertyTypeString@2x.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容