#selector的参数不能引用属性

Cra*_*lot 8 uiactivityviewcontroller swift

目标是将以下条件更新为Swift 2.2语法,该语法建议使用#selector or explicitly constructing a Selector.

if activityViewController.respondsToSelector("popoverPresentationController") {

}
Run Code Online (Sandbox Code Playgroud)

但是,使用以下作为替换失败并生成错误说 Argument of #selector cannot refer to a property

if activityViewController.respondsToSelector(#selector(popoverPresentationController)) {

}
Run Code Online (Sandbox Code Playgroud)

实施此检查的正确方法是#selector什么?

sma*_*ity 2

您可以使用以下内容:

if activityViewController.respondsToSelector(Selector("popoverPresentationController")) {

}
Run Code Online (Sandbox Code Playgroud)

或者如果您仅针对 iOS

if #available(iOS 8.0, *) {
    // You can use the property like this
    activityViewController.popoverPresentationController?.sourceView = sourceView
} else {

}
Run Code Online (Sandbox Code Playgroud)

或者如果你的代码不限于iOS

#if os(iOS)
    if #available(iOS 8.0, *) {
        activityViewController.popoverPresentationController?.sourceView = sourceView
    } else {

    }
#endif
Run Code Online (Sandbox Code Playgroud)