swift-30运行时加载属性列表

我以前做的swift笔记, 之前都是整理在onenote上, 最近想到整理出博客. 也方便自己查找, 可以当做自己的一份文档.

swift-30运行时加载属性列表_第1张图片
image.png
swift-30运行时加载属性列表_第2张图片
image.png
//
//  Person.swift
//  14运行时加载属性列表

import UIKit

class Person: NSObject {
    var name: String?
    
    //基本数据类型 在oc中没有可选 如果定义可选 运行时同样获取不到 使用KVC 就会奔溃
    //var age: Int? 定义基本数据类型 运行时获取不到
    var age: Int = 0
    var title: String?
    
    class func propertyList() -> [String] {
        var count: UInt32 = 0
        
        //1 获取 类 的属性列表 返回属性列表的数组 可选项
        // 方法返回值为 UnsafeMutablePointer?
        // 注意点 c语言 对象记得要释放
        // 获取 ivar 列表是所有第三方框架字典转模型的基础
        let list = class_copyPropertyList(self, &count)
        
        /**
        class_copyIvarList(<#T##cls: AnyClass!##AnyClass!#>, <#T##outCount: UnsafeMutablePointer!##UnsafeMutablePointer!#>)
        class_copyMethodList(<#T##cls: AnyClass!##AnyClass!#>, <#T##outCount: UnsafeMutablePointer!##UnsafeMutablePointer!#>)
        class_copyPropertyList(<#T##cls: AnyClass!##AnyClass!#>, <#T##outCount: UnsafeMutablePointer!##UnsafeMutablePointer!#>)
         */
        
        print("属性列表的数量 \(count)")
        
        //2 遍历数组
//        for i in 0..?
//            // Int8 -> Byte -> Char C语言的字符串
//            let cName = property_getName(pty!)
//            
//            //5 转换成 String 的字符串
//            let name = String(utf8String: cName!)
//            
//            print(name)
//        }
        
        //2 遍历数组
        for i in 0..

你可能感兴趣的:(swift-30运行时加载属性列表)