मैं अक्सर ऐसा करते हैं,कमजोर आत्म कहाँ जाता है?
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()
}
}
डब्ल्यू टी एच हम क्या करना चाहिए?
सभी तीन सुझाव पूरी तरह से काम करने के लिए प्रतीत होता है। यहां अर्थ की पूरी गहराई क्या है? और कौन सा करना चाहिए?
और अंतिम में, आपको [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()
}
}
}
तो है, हम करेंगे पेंट, (जैसे कि, बादल से खेल जानकारी और उसके बाद के लिए कहते हैं) दो सेकंड प्रतीक्षा करें और है कि ऐसा करना जारी रखें बार बार; लेकिन निश्चित रूप से आप इसे देखने के लिए को पूरी तरह बंद करना चाहते हैं।
- एक पूछता है ............ कमजोर संदर्भ, एक कमजोर या मजबूत संदर्भ का एक मजबूत संदर्भ है?
नोट: के रूप में यह होता है, यह विशेष रूप से self
का उपयोग नहीं करता: मेरे उदाहरण में, tickle.fresh(){}
सिर्फ एक सिंगलटन या कुछ और कहता है। तो अगर आप ऐसा करते हैं चाहते हैं:
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()
}
}
}