利用runtime獲取私有屬性名及類型

在iOS中沒有絕對的私有屬性,雖然沒有辦法直接訪問私有屬性,但是可以利用kvc,kvo間接訪問私有屬性。使用kvc,kvo的前提是知道屬性名,下面這個方法就是如何獲取屬性的變量名及類型。
使用runtime之前要先導(dǎo)入

#import <objc/runtime.h>

然后使用下面這個方法

- (void)printIvar:(Class)class {
    // count記錄變量的數(shù)量IVar是runtime聲明的一個宏
    unsigned int count = 0;
    // 獲取類的所有屬性變量
    Ivar *menbers = class_copyIvarList(class, &count);
    NSLog(@"count : %i",count);
    for (int i = 0; i < count; i++) {
        Ivar var = menbers[i];
        // 將IVar變量轉(zhuǎn)化為字符串,這里獲得了屬性名和類型
        const char *memberName = ivar_getName(var);
        const char *memberType = ivar_getTypeEncoding(var);
        NSLog(@"%s----%s", memberName, memberType);
        //并不能打印父類屬性
    }
}

需要注意的是,該方法并不會打印父類的屬性。

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

相關(guān)閱讀更多精彩內(nèi)容

  • *面試心聲:其實(shí)這些題本人都沒怎么背,但是在上海 兩周半 面了大約10家 收到差不多3個offer,總結(jié)起來就是把...
    Dove_iOS閱讀 27,619評論 30 472
  • 對于從事 iOS 開發(fā)人員來說,所有的人都會答出【runtime 是運(yùn)行時】什么情況下用runtime?大部分人能...
    夢夜繁星閱讀 3,812評論 7 64
  • 面試題參考1 : 面試題[http://www.cocoachina.com/ios/20150803/12872...
    江河_ios閱讀 1,816評論 0 4
  • 設(shè)計(jì)模式是什么? 你知道哪些設(shè)計(jì)模式,并簡要敘述? 設(shè)計(jì)模式是一種編碼經(jīng)驗(yàn),就是用比較成熟的邏輯去處理某一種類型的...
    small_Sun閱讀 486評論 0 4
  • 今天看了一點(diǎn)《管理時間幸福學(xué)》,我覺得一句話很對,你的娛樂方式,可能正在悄悄地改變你。人為什么要娛樂呢,當(dāng)你感到巨...
    Tdeskmate閱讀 189評論 0 0

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