swift – 有没有办法获得变量列表和类的功能

swift – 有没有办法获得变量列表和类的功能,第1张

概述有没有办法获得变量列表和类的功能? 例如: 如果我的课程如下 class Person { var age: Int! var name: String! func isOlder(from person: Person) -> Bool { } func hasSameName(as person: Person) -> Bool { }} 我想获得2个名单: 有没有办法获得变量列表和类的功能?

例如:
如果我的课程如下

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( _ : )]

或类似的东西.

谢谢

解决方法 在目标C中

#import <objc/runtime.h>getDetailsOfClass(Class clz) {    unsigned int methodCount = 0;    Method *methods = class_copyMethodList(clz,&methodCount);    printf("Found %d methods on '%s'\n",methodCount,class_getname(clz));    for (unsigned int i = 0; i < methodCount; i++) {        Method method = methods[i];        printf("\t'%s' has method named '%s' of enCoding '%s'\n",class_getname(clz),sel_getname(method_getname(method)),method_getTypeEnCoding(method));    }    free(methods);}

调用:getDetailsOfClass(class)

在斯威夫特

遵循SO Post.已实施相同并取得成功.

要获取方法名称:

func printMethodnamesForClass(cls: AnyClass) {    var methodCount: UInt32 = 0    let methodList = class_copyMethodList(cls,&methodCount)    if methodList != nil && methodCount > 0 {        enumerateCArray(methodList,methodCount) { i,m in            let name = methodname(m) ?? "unkNown"            println("#\(i): \(name)")        }        free(methodList)    }}func enumerateCArray<T>(array: UnsafePointer<T>,count: UInt32,f: (UInt32,T) -> ()) {    var ptr = array    for i in 0..<count {        f(i,ptr.memory)        ptr = ptr.successor()    }}func methodname(m: Method) -> String? {    let sel = method_getname(m)    let nameCString = sel_getname(sel)    return String.fromCString(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)}else {println("\(classname): no such class")}}

快乐编码..

总结

以上是内存溢出为你收集整理的swift – 有没有办法获得变量列表和类的功能全部内容,希望文章能够帮你解决swift – 有没有办法获得变量列表和类的功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1025130.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存