说你有...
class Boss {
func callback() { }
}
你有类似...
class Worker {
static func compute(forMe: Boss) {
.. do some work that takes 10 seconds ..
forMe?.callback()
}
}
因此:在的特定情况下Boss
,假设b
您呼叫类似...
Worker.compute(forMe: self)
说10秒过去。说在7秒钟,b
不存在(嗯,我希望它不存在)。在10秒结束时,我compute
想说:“哦,该死,似乎forMe
不再存在。我不会进行回调,而放弃。”
因此,“计算”内部的“ forMe”应该很弱。(我猜?)
真的,您如何在Swift中实现这个基本概念?
如果您的compute
函数正在异步执行工作并获取回调,那么它可以在该工作的闭包中弱地捕获您的参数:
static func compute(forMe: Boss) {
doSomethingAsync { [weak forMe] in
// forMe will be nil in here if it was deallocated before this is called
forMe?.callback()
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句