十七、Swift3.0之使用运行时获取属性列表

额外说明:
1、基本数据类型,在OC中没有可选,如果定义为可选,运行时同样获取不到,使用KVC就会崩溃
2、private的属性,使用运行时,同样获取不到属性(可以获取到ivar),同样会让KVC崩溃

class Person: NSObject {
   var name: String?
   
   //基本数据类型,在OC中没有可选,如果定义为可选,运行时同样获取不到,使用KVC就会崩溃
   //var age: Int?
   var age: Int = 0
   
   //private的属性,使用运行时,同样获取不到属性(可以获取到ivar),同样会让KVC崩溃
   //private var title: String?
   var title: String?
   
   //运行时获取到对象的属性列表:通过KVC动态的设置值
   //运行时获取对象的方法列表:通过setMessage动态的发送任何消息
   //运行时获取对象的ivars列表:这是所有第三方框架字典转模型的基础
   
   //目标:使用运行时获取当前类所有属性的数组
   //class修饰类方法
   class func propertyList() -> [String]{
       //注意这里一定要用var
       var count: UInt32 = 0
       //1、获取类的属性列表  返回属性列表的数组(这是可选项)
       //<#T##outCount: UnsafeMutablePointer!##UnsafeMutablePointer!#>可变的Unit32类型的指针
       var list = class_copyPropertyList(self, &count)
       print("属性的数量:\(count)")
       
       //2、遍历数组
//        for i in 0..
    //6、释放C语言的对象
    free(list)
    //[]是一个空数组
    return []
}

}

你可能感兴趣的:(十七、Swift3.0之使用运行时获取属性列表)