Swift 中用于回调实现的接口模拟

Interface analog in Swift for callbacks realization

请帮我在 Swift 中创建接口,以便将其用于回调目的。

Java中的示例:

public interface ErrorListener {
    void onError(String errorMsg);
}

class SomeUiClass implements ErrorListener {

    public SomeUiClass () {
        SomeWorkingClass s = new SomeWorkingClass();
        s.setErrorListener(this);
        s.doSomething(true);
    }

    @Override
    void onError(String errorMsg) {
        System.out.println("Error msg: " + errorMsg);
    }
}

class SomeWorkingClass {

    ErrorListener listener;

    void setErrorListener (ErrorListener listener) {
        this.listener = listener;
    }

    void doSomething (boolean withError) {
        if (withError) listener.onError("Test error");
    }

}


//....
SomeUiClass ui = new SomeUiClass(); // prints: Error msg: Test error 

所以,为了这个目的,我尝试在 Swift 中使用 protocol,但我不明白,如何正确使用它。

在 swift

中看起来像这样
protocol ErrorListener {
    func onError(errorMsg:String)
} 
class SomeUiClass : UIViewController ,  ErrorListener { 

    func onError(errorMsg:String)
        print("Error msg: ", errorMsg)
    }
}

class SomeWorkingClass : UIViewController{

    weak var listener:ErrorListener?

    func setErrorListener (listener:ErrorListener) {
        self.listener = listener
    } 
} 

let ui = SomeUiClass() // prints: Error msg: Test error