假设我有一个协议和一个符合该协议的类。
什么是推荐的实现此类结构的方法?我们需要每次传递空闭包,还是调用闭包值设置为nil的函数,或者还有其他处理方式?
protocol Foo {
func task(success: (() -> Void)?)
}
class Bar: Foo {
func task(success: (() -> Void)?) {
//DO STUFF
}
}
成功闭包是可选的,因为并非每次调用都需要它。例如,在从单元测试中调用此类函数时,这是一种常见情况,因为我们想在成功闭包中实现期望,而在常规调用中,某些原因不需要成功闭包。
由于在协议中定义的函数不能具有其参数的默认值,因此对于符合 Foo
的对象上的任务的每次调用,我们必须使用闭包调用它或将 nil 显式传递为闭包值:
var obj: Foo
obj = Bar()
obj.task(nil) //CLOSURE VALUE SET TO nil
obj.task() {} //EMPTY CLOSURE
obj.task() //NOT ALLOWED
什么是推荐的实现此类结构的方法?我们需要每次传递空闭包,还是调用闭包值设置为nil的函数,或者还有其他处理方式?
vc.navigationController.pushViewController(vc2, animated: true, completion:nil)
。这只是意味着在任务完成后您不想做任何事情。 - NSGangster