gpt4 book ai didi

swift - 有没有办法获取类的变量和函数列表

转载 作者:搜寻专家 更新时间:2023-10-30 22:30:25 25 4
gpt4 key购买 nike

有没有办法获取类的变量和函数列表?

例如:如果我的类(class)如下所示

class Person {
var age: Int!
var name: String!
func isOlder(from person: Person) -> Bool { }
func hasSameName(as person: Person) -> Bool { }
}

我想得到 2 个列表:

1. [age, name]
2. [isOlder( _ : ), hasSameName( _ : )]

或类似的东西。

谢谢

最佳答案

swift 4:

func printMethodNamesForClass(cls: AnyClass) {
var methodCount: UInt32 = 0
let methodList = class_copyMethodList(cls, &methodCount)
if let methodList = methodList, methodCount > 0 {
enumerateCArray(array: methodList, count: methodCount) { i, m in
let name = methodName(m: m) ?? "unknown"
print("#\(i): \(name)")
}

free(methodList)
}
}
func enumerateCArray<T>(array: UnsafePointer<T>, count: UInt32, f: (UInt32, T) -> Void) {
var ptr = array
for i in 0..<count {
f(i, ptr.pointee)
ptr = ptr.successor()
}
}
func methodName(m: Method) -> String? {
let sel = method_getName(m)
let nameCString = sel_getName(sel)
return String(cString: nameCString)
}
func printMethodNamesForClassNamed(classname: String) {
// NSClassFromString() is declared to return AnyClass!, but should be AnyClass?
let maybeClass: AnyClass? = NSClassFromString(classname)
if let cls: AnyClass = maybeClass {
printMethodNamesForClass(cls: cls)
} else {
print("\(classname): no such class")
}
}

关于swift - 有没有办法获取类的变量和函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44670876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com