在Swift中,我经常需要将noop闭包传递给一个方法,以符合该方法的预期参数(arity)。在Obj的好日子里,人们可以将nil
作为noop回调传递给它,然后就可以完成它了。在Swift中,有没有更快、更优雅的方法来做到这一点,而不需要像下面这样传递空块?
UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (UIAlertAction) -> Void in }) // do nothing in callback
完整示例:
import UIKit
class UIAlertControllerFactory {
class func ok(title: String, message: String) -> UIAlertController {
var alertController = UIAlertController(title: title, message: message, preferredStyle: UIAlertControllerStyle.Alert)
var okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default, handler: { (UIAlertAction) -> Void in
})
alertController.addAction(okAction)
return alertController
}
}
发布于 2014-10-04 23:22:28
一般情况下,如果你不能通过nil
var okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default,
handler:{ _ in })
在这种情况下,还可以传递nil
,因为(从iOS 9.0开始)处理程序是Optional
var okAction = UIAlertAction(title: "Ok", style: UIAlertActionStyle.Default,
handler:nil)
发布于 2014-10-04 23:24:21
extension UIAlertAction {
convenience init(title: String, style: UIAlertActionStyle) {
return self.init(title: title, style: style, handler: { (UIAlertAction) -> Void in })
}
}
只需省略最后一个参数。你可以把它放到你的“工厂”里。
https://stackoverflow.com/questions/26194140
复制相似问题