假设你有...
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
不再存在了。我不会做回调,并给出起来。”
所以,“compute”中的“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()
}
}
关于ios - 如何正确地将弱引用传递给函数的调用者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60834611/