Swift4:respondstoSelector不工作

时间:2017-10-03 13:11:20

标签: ios uiviewcontroller nsobject swift4

以下代码在swift 3.x中完美运行,但在swift 4中则不然。

let selector = "managerDidDetectedStation:"
let observer = <UIViewController subclass object>
let station = <Station Object>

if observer.responds(to: Selector(selector) {         
    observer.perform(Selector(selector), with: station)
}

observer.responds(to: Selector(selector)始终返回false。有没有人知道swift4中这个API有什么变化?

1 个答案:

答案 0 :(得分:11)

您需要在observer

的顶部添加 @objcMembers

对于Ex。如果observerXYZClass类的对象,则写入

@objcMembers
class XYZClass : NSObject
{
  // Your Stuff
}

另一种方法是让@objc启动您的方法,如下所示。

 @objc func managerDidDetectedStation...