在Java中,有一种模式可以在其中直接声明一个委托,而不是使父类符合该接口:
例如:
public class MyClass {
interface Delegate {
void completion(Boolean succeeded);
}
void doSomething(Delegate delegate) {
//...
}
void myMethod() {
doSomething(new Delegate() { // <-- declared in-line
@Override
public void completion(Boolean succeeded) {
// ...
}
});
}
}
在Swift中,我可以使MyClass
符合Delegate
协议,并在类级别覆盖委托方法。我该如何像Java模式一样内联?
这是我想您想要的两个变体,第一个仅带有闭包
class MyClass {
typealias Completion = (Bool) -> ()
func myMethod(completion: Completion) {
var isCool = false
//some code...
completion(isCool)
}
}
第二个是带有协议的,我跳过了doSomething
方法,但是当然可以很容易地添加它]]
protocol Delegate {
func completion(_ flag: Bool) -> ()
}
class MyClass2 {
func myMethod(_ delegate: Delegate) {
var isCool = false
//some code...
delegate.completion(isCool)
}
}