
例如:
如果我的课程如下
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 – 有没有办法获得变量列表和类的功能所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)