在Swift中使用选择器的内联块/函数

时间:2014-11-20 20:15:20

标签: swift

Swift中的内联选择器是否有本地语言功能?如果没有,这是否有一个优雅的模式?

例如,使用Selector的NSTimer。这是一种没有内联函数或块的方法:

var timer = NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: "update", userInfo: nil, repeats: false)

@objc func update() {
    print("timer up")
}

我宁愿有类似的东西。 这是一个概念,不会编译。

var timer = NSTimer.scheduledTimerWithTimeInterval(2,
        target: self,
        selector: { println("timer up") }, // What can I do here?
        userInfo: nil,
        repeats: false)

这与目标C中有关内联选择器的question类似。

1 个答案:

答案 0 :(得分:2)

此代码与Objective-C桥接,并且没有办法在那里进行。您传递的字符串最终会转换为选择器(SEL)并传递给objc_msgSend。所以,没有。

您可以查看BlocksKit adds these NSTimer methods,它将转换为Swift中的闭包。