Swift 獲取屬性和方法列表

可利用反射機(jī)制獲取某個(gè)類的屬性及方法列表,代碼很簡單,重點(diǎn)用到class_copyPropertyListclass_copyMethodList,如下:

extension NSObject {
   
    func getPropertyNames(){
        
        var outCount:UInt32
        
        outCount = 0
        
        
        let propers:UnsafeMutablePointer<objc_property_t>! =  class_copyPropertyList(self.classForCoder, &outCount)
        
        
        let count:Int = Int(outCount);
        
        print(outCount)
        
        for i in 0...(count-1) {
            
            let aPro: objc_property_t = propers[i]
            
            let proName:String! = String(UTF8String: property_getName(aPro));
            
            print(proName)
            
        }
        
    }
    
    
    func getMethodNames(){
        
        var outCount:UInt32
        
        outCount = 0
        
        let methods:UnsafeMutablePointer<objc_property_t>! =  class_copyMethodList(self.classForCoder, &outCount)
        
        let count:Int = Int(outCount);
        
        print(outCount)
        
        for i in 0...(count-1) {
            
            let aMet: objc_property_t = methods[i]
            
            let methodName:String! = String(UTF8String: property_getName(aMet));
            
            print(methodName)
            
        }
        
    }
    
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,284評論 25 708
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,923評論 18 139
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,768評論 0 9
  • 本文轉(zhuǎn)載自:http://yulingtianxia.com/blog/2014/11/05/objective-...
    ant_flex閱讀 785評論 0 1
  • 一天又完了,邁不出那一步,我不愛我自己。
    煙澀寒閱讀 121評論 0 0