在OC中,沒(méi)有絕對(duì)的私有,用運(yùn)行時(shí)可以取出。
在Swift中,有絕對(duì)的私有,用private修飾的,是無(wú)法取出的。
下面是swift運(yùn)行時(shí)獲取對(duì)象屬性列表的示例:
import UIKit
class Student: NSObject {
var name: String?
var age: Int = 0
var no: String?
class func propertyList() {
var count: UInt32 = 0
let prolist = class_copyPropertyList(self, &count)
for i in 0..<Int(count) {
let pro = prolist?[i]
// 獲取 `屬性` 的名稱C語(yǔ)言字符串
let proString = property_getName(pro!)
// 轉(zhuǎn)化成 String的字符串
let proName = String(utf8String: proString!)
print(proName!)
}
// 釋放 C 語(yǔ)言的對(duì)象
free(prolist)
}
}
- 在控制器中調(diào)用如下:
print(Student.propertyList())
- 輸出結(jié)果如下:
name
age
no
()