Я часто это делаю,
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()
}
}
W T H мы должны делать?
Все три предложения, похоже, работают отлично. Какая здесь полная глубина смысла? И что делать?
И в последнем, почему бы вам не сказать что-то вроде [weak self?]
, как бы?
Примечание. Извините, если я не был явным, импликация
func paint() {
paintSomething
let t = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: t) { weak maybe
tickle.fresh(){ weak maybe
guard self != nil else {
print("retired correctly!! hooray! thanks SO!")
return
}
self?.paint()
}
}
}
Итак, мы будем (скажем, призывать игровую информацию из облака и затем) рисовать, подождать две секунды и продолжать делать это снова и снова; но, конечно, вы хотите, чтобы это полностью остановилось, когда контроллер просмотра ушел.
- Один вопрос............ является сильной ссылкой на слабую ссылку, слабую или сильную ссылку?
Примечание. В моем примере tickle.fresh(){}
просто вызывает одноэлемент или что-то: в этом случае он особо не использует self
. Итак, вы сделали бы это:
func paint() {
paintSomething
let t = DispatchTime.now() + 2.0
DispatchQueue.main.asyncAfter(deadline: t) { [weak self] _ in
guard self != nil else {
print("retire early, don't even bother going to the cloud!")
print("thanks, SO!")
return
}
tickle.fresh(){ [weak self] _ in
guard self != nil else {
print("went to the cloud, then got retired!")
print("thanks, SO!")
return
}
self?.paint()
}
}
}