我是一名 Android 开发者,我对 Swift 还很陌生,所以请多多包涵。我正在尝试在 Swift 中使用 Protocol 实现回调函数。在 Java 中,我可以创建一个接口(interface)并使其成为一个实例,而无需将它链接到任何实现类,以便我可以传递它,例如:
public interface SomeListener {
void done();
}
SomeListener listener = new SomeListener() {
@Override
public void done() {
// do something
}
}
listener.done();
我如何在 Swift 中使用 Protocol 来做到这一点?还是真的可以做到?
最佳答案
这是实现协议(protocol)的一种方式。有点像 ObjC 中的委托(delegate)模式
protocol DoneProtocol {
func done()
}
class SomeClass {
var delegate:DoneProtocol?
func someFunction() {
let a = 5 + 3
delegate?.done()
}
}
class Listener : DoneProtocol {
let someClass = SomeClass()
init() {
someClass.delegate = self
someClass.someFunction()
}
// will be called after someFunction() is ready
func done() {
println("Done")
}
}
关于iOS Swift 如何创建协议(protocol)实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27616980/