" class_copyMethodList"仅返回init方法

时间:2017-09-26 09:30:10

标签: swift4

我正在尝试获取类的方法列表。这是我的代码

class MyClass: NSObject {
  func method1(){
    print("Method1")
  }

  func method2(){
    print("Method2")
  }
}

var methodCount: UInt32 = 0
let methodList = class_copyMethodList(MyClass.self, &methodCount)

for i in 0..<Int(methodCount){
   let unwrapped = methodList?[i]
   print(NSStringFromSelector(method_getName(unwrapped!)))
}

输出是:

init 

method1method2未在输出中显示。

如果我做错了,请纠正我。帮助将受到关注。

谢谢

1 个答案:

答案 0 :(得分:0)

您必须使用@objc属性将方法公开给Objective C.

像这样:

class MyClass: NSObject {
  @objc func method1(){
    print("Method1")
  }

  @objc func method2(){
    print("Method2")
  }
}