我有以下代码来创建数据绑定的观察特性。 这是在作品中,所以我不知道什么是最终的实施将是,我仍然很新的雨燕。
class Observable<T> {
typealias Observer = T -> Void
var value: T {
didSet {
for observer in self.observers {
observer?(self.value)
}
}
}
var observers: [Observer?] = []
init(_ val: T) {
self.value = val
}
}
我想保持弱引用的观测关闭。 我不想依靠客户端,以确保封闭弱/中传递,通过捕获列表之前无主的。 特别是,因为可以有一个给定的类许多观察到的性能。
是否有可能使我的可观察类弱关闭引用?
更新:
我发现一对夫妇,我认为会帮助我达到我想要的资源:
进行自我在斯威夫特方法弱
特别,
func methodPointer<T: AnyObject>(obj: T, method: (T) -> () -> Void) -> (() -> Void) {
return { [unowned obj] in method(obj)() }
}
下面的链接是指上述计算器的答案,并进入一些细节:
http://blog.xebia.com/2014/10/09/function-references-in-swift-and-retain-cycles/
这是一个双向绑定例如:
http://five.agency/solving-the-binding-problem-with-swift/
特别,
class BondBox<T> {
weak var bond: Bond<T>?
init(_ b: Bond<T>) { bond = b }
}
其中听者被包裹在一个叫做债券类,这是在BondBox弱引用。