在OC中,没有绝对的私有,用运行时可以取出。
在Swift中,有绝对的私有,用private修饰的,是无法取出的。
以下是Swift获取类属性的方法:
//
// Person.swift
//
import UIKit
class Person: NSObject {
var name: String?
var age:Int = 0
private var title: String?
class func propertyList( ) {
var count: UInt32 = 0
let list = class_copyPropertyList(self, &count)
for i in 0..<Int(count) {
let pty = list?[i]
let cName = property_getName(pty)
let name = String(utf8String: cName!)
print(name)
}
free(list)
}
}
//在控制器中调用
// ViewController.swift
//
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
Person.propertyList()
}
}
输出结果:
Optional("name")
Optional("age")