कार्यों में बंद मानकों के साथ स्विफ्ट 1.2 में एक नई विशेषता है, और प्रलेखन के रूप में कहते हैं:@noescape विशेषता 1.2
यह बताता है कि पैरामीटर ही कभी कहा जाता है (या एक के रूप में पारित @ एक कॉल में noescape पैरामीटर), जिसका अर्थ है कि यह कॉल के जीवनकाल से अधिक जीवित नहीं कर सकते हैं।
मेरी समझ में, हम [weak self]
का उपयोग कर सकते हैं ताकि बंद करने के लिए एक मजबूत संदर्भ न हो। अपने वर्ग, और स्वयं शून्य हो सकता है या उदाहरण है जब बंद निष्पादित किया जाता है, लेकिन अब, @noescape
मतलब यह है कि बंद करता है, तो वर्ग deinitalized है कभी नहीं निष्पादित किया जाएगा। क्या मैं इसे सही ढंग से समझता हूँ?
और यदि मैं सही हूं, तो मैं नियमित कार्य के @noescape
बंद होने का उपयोग क्यों करूंगा, जब वे बहुत समान व्यवहार करते हैं?
मेरे लिए महत्वपूर्ण बिट: "' @ नोस्केप 'गारंटी देता है कि बंद नहीं होगा ... अतुल्यकालिक रूप से उपयोग किया जाएगा "। जिसका अर्थ है कि आप इसे नेटवर्किंग कोड के साथ उपयोग नहीं कर सकते हैं जो एसिंक को निकाल देता है। –