Swift4:respondstoSelector不工作

Abi*_*ain 4 uiviewcontroller nsobject ios 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)
}
Run Code Online (Sandbox Code Playgroud)

observer.responds(to: Selector(selector)总是返回false.有人知道swift4中这个api有什么变化吗?

iPa*_*tel 11

您需要添加@objMembers在顶observer

对于Ex.if observerXYZClass类的对象然后写

@objcMembers
class XYZClass : NSObject
{
  // Your Stuff
}
Run Code Online (Sandbox Code Playgroud)

要么

另一种方法是@objc开始你的方法,如下所示.

 @objc func managerDidDetectedStation...
Run Code Online (Sandbox Code Playgroud)