Swift:无法转换表达式'() - > () - > $ T1'输入'()'

时间:2015-02-02 22:19:34

标签: swift closures

我定义了一个非常简单的函数,它将在下一个运行循环迭代中执行一个块:

func NextRun(f:() -> ()){
  let observer = CFRunLoopObserverCreateWithHandler(nil, CFRunLoopActivity.Entry.rawValue, Boolean(0), 0) { obs, act in f() }
  CFRunLoopAddObserver(CFRunLoopGetMain(), observer, kCFRunLoopCommonModes)
}

很简单,我可以使用它,只要我直接为其签名匹配预期参数的命名闭包。例如:

  func alertUser() {
    self.masterRouter?.didReceiveMessage(userID)
  }
  NextRun(alertUser)

然而,我不能做的就是把它关掉。这失败了:

  NextRun{
    self.masterRouter?.didReceiveMessage(userID)
  }

我收到错误:

  

无法转换表达式'() - > () - > $ T1'输入'()'

我尝试过各种语法,但总是会遇到同样的错误。似乎Swift将闭包签名与闭包内部的函数混淆了......或者我错过了什么?

0 个答案:

没有答案