डब्ल्यूडब्ल्यूडीसी 2014 सत्र 403 इंटरमीडिएट स्विफ्ट और ट्रांसक्रिप्ट में , निम्नलिखित स्लाइड थी
उस स्थिति में स्पीकर ने कहा, अगर हम [unowned self]
वहां उपयोग नहीं करते हैं, तो यह मेमोरी लीक होगा। क्या इसका मतलब है कि हमें हमेशा [unowned self]
अंदर से बंद करना चाहिए ?
स्विफ्ट वेदर ऐप के ViewController.swift की लाइन 64 पर , मैं उपयोग नहीं करता [unowned self]
। लेकिन मैं कुछ @IBOutlet
एस self.temperature
और जैसे का उपयोग करके यूआई को अपडेट करता हूं self.loadingIndicator
। यह ठीक हो सकता है क्योंकि @IBOutlet
मेरे द्वारा परिभाषित सभी s हैं weak
। लेकिन सुरक्षा के लिए, क्या हमें हमेशा उपयोग करना चाहिए [unowned self]
?
class TempNotifier {
var onChange: (Int) -> Void = {_ in }
var currentTemp = 72
init() {
onChange = { [unowned self] temp in
self.currentTemp = temp
}
}
}
onChange
है - एक [weak self]
बंद होना चाहिए , क्योंकि यह एक सार्वजनिक (आंतरिक रूप से, लेकिन अभी भी) संपत्ति है, इसलिए एक अन्य वस्तु को प्राप्त कर सकते हैं और बंद कर सकते हैं, TempNotifier ऑब्जेक्ट को चारों ओर रखते हुए (अनिश्चित रूप से यदि उपयोग करने वाली वस्तु को onChange
तब तक बंद नहीं होने दिया जाता जब तक कि यह TempNotifier
चला नहीं जाता, अपने स्वयं के कमजोर रेफरी के माध्यम से TempNotifier
) । अगर var onChange …
थे private var onChange …
तो [unowned self]
सही होंगे। मैं हालांकि इस बारे में 100% निश्चित नहीं हूँ; अगर मैं गलत हूं तो कोई मुझे सही करे।
[]
? मुझे Apple डॉक्स में स्पष्टीकरण नहीं मिला।
{}
खाली क्लोज़र (क्लोज़र का उदाहरण) डिफ़ॉल्ट के रूप में है (कुछ भी नहीं करता है), (Int) -> Void
क्लोज़र परिभाषा है।