无法使用类型为“(字符串)”的参数列表调用“执行选择器”

Posted

技术标签:

【中文标题】无法使用类型为“(字符串)”的参数列表调用“执行选择器”【英文标题】:Cannot invoke 'performSelector' with an argument list of type '(String)' 【发布时间】:2016-06-14 10:57:52 【问题描述】:

我正在使用 xcode 8 beta 并遇到错误且无法解决。

无法使用“(字符串)”类型的参数列表调用“performSelector

func webView(WebViewNews: UIWebView!, shouldStartLoadWithRequest request: NSURLRequest!, navigationType: UIWebViewNavigationType) -> Bool 

     if request.URL!.absoluteString.hasPrefix("ios:") 
        // Call the given selector
          self.performSelector("webToNativeCall")
       // Cancel the location change
          return false
       
        return true
 

【问题讨论】:

请发布您的完整课程。具有选择器webToNativeCall 的对象是什么?为什么不直接在self 上调用函数呢?你不应该为此需要performSelector 【参考方案1】:

performSelector 已重命名为perform(_ aSelector:)

class SomeClass: NSObject 

    func webToNativeCall() 
        // ...
    

    func someFunc() 
        self.perform(#selector(webToNativeCall))
    

【讨论】:

以上是关于无法使用类型为“(字符串)”的参数列表调用“执行选择器”的主要内容,如果未能解决你的问题,请参考以下文章

无法使用类型为“(字符串,withIntermediateDirectories:B)的参数列表调用“createDirectoryAtPath”

无法使用类型为“(字符串)”的参数列表调用 <method>

SWIFT 4.1 无法使用类型为“(字符串?)”的参数列表调用类型“Double”的初始化程序

无法使用类型为“”的参数列表调用类型“”的初始化程序

无法使用类型为“(字符串,选项:nil,指标:nil,视图:Dictionary<String,UIView!>)”的参数列表调用“constraintsWithVisualFormat”

无法调用类型的初始化程序:使用类型为“(_Element)”的参数列表