假设我有一个非常简单的类:
class Box<T> {
var boxedObject:T
init(object: T) {
self.boxedObject = object
}
}
我现在想要实现的是添加委托,以便通知我文本框中的值已更改:
protocol BoxDelegate<T>: class {
func valueInBoxChanged(box: Box<T>) -> Void
}
class Box<T> {
var boxedObject: T {
didSet {
self.delegate?.valueInBoxChanged(self)
}
}
weak var delegate: BoxDelegate<T>?
init(object: T) {
self.boxedObject = object
}
}
这段代码当然不能工作,因为我们没有通用的委托。我可以将委托作为一个带有闭包的结构体,但这是一个有点丑陋的解决方案。在Swift中,我应该如何处理这样的事情?