मैं स्विफ्ट में एक बंद आधारित मजबूत संदर्भ चक्र को हल करने का प्रयास कर रहा हूं।
नीचे दिए गए कोड में, ऑब्जेक्ट को स्वयं के व्यू कंट्रोलर द्वारा बनाए रखा जाता है। ProgressHUD
एक UIView
है जो स्वयं के व्यू कंट्रोलर द्वारा भी बनाए रखा जाता है। ProgressHUD
पूरा होने पर हर बार लीक हो जाता है। नई बंद कैप्चर फीचर का उपयोग करते समय, स्वयं को कमजोर या अप्रयुक्त घोषित करने से स्मृति रिसाव को हल नहीं किया जाता है। इस कारण है कि के रूप मेंस्विफ्ट क्लोजर - कमजोर के रूप में स्वयं को कैप्चर करना
weak var weakSelf = self
object.setCompletionHandler { (error) -> Void in
if(!error){
weakSelf?.tableView.reloadData()
}
weakSelf?.progressHUD?.hide(false)
}
कोई भी विचार स्विफ्ट कैप्चरिंग के साथ काम नहीं कर रहा:
object.setCompletionHandler { [weak self] (error) -> Void in
if(!error){
self?.tableView.reloadData()
}
self?.progressHUD?.hide(false)
}
हालांकि, अगर मैं बंद के बाहर स्वयं के लिए एक कमजोर वर की घोषणा, यह स्मृति रिसाव को ठीक करता है, इस तरह ?
वहाँ एक चक्र को बनाए रखने – newacct