【发布时间】:2017-06-18 21:21:30
【问题描述】:
我经常这样做,
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
beep()
}
我们经常在一个应用中这样做
tickle.fresh(){
msg in
paint()
}
但是如果你这样做这个
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
tickle.fresh(){
msg in
paint()
}
}
当然你必须这样做这个
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) { [weak self] _ in
tickle.fresh(){
msg in
self?.paint()
}
}
或者,也许这个
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) {
tickle.fresh(){
[weak self] msg in
self?.paint()
}
}
或者这个
let when = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: when) { [weak self] _ in
tickle.fresh(){
[weak self] msg in
self?.paint()
}
}
我们应该怎么做?
所有三个建议似乎都可以完美运行。这里的全部含义是什么?应该做什么?强引用是弱引用、弱引用还是强引用?生存还是毁灭?就是这个问题!
【问题讨论】:
标签: swift weak-references