मैं Xcode का प्रलेखन पढ़ रहा हूँ, और यहाँ कुछ है जो मुझे पहेलियाँ:
__block typeof(self) tmpSelf = self;
[self methodThatTakesABlock:^ {
[tmpSelf doSomething];
}];
निम्नलिखित को प्रलेखन से कॉपी किया गया है:
ब्लॉक इसे कैप्चर करने वाले चर के लिए एक मजबूत संदर्भ बनाता है। यदि आप
selfकिसी ब्लॉक के भीतर उपयोग करते हैं, तो ब्लॉक एक मजबूत संदर्भ बनाता हैself, इसलिए यदिselfब्लॉक का मजबूत संदर्भ है (जो आमतौर पर ऐसा करता है), एक मजबूत संदर्भ चक्र परिणाम। चक्र से बचने के लिए, आपको__blockब्लॉक के बाहर स्वयं को एक कमजोर (या ) संदर्भ बनाने की आवश्यकता है , जैसा कि ऊपर दिए गए उदाहरण में है।
मुझे समझ नहीं आ रहा है कि 'कमजोर (या __block)' का क्या मतलब है?
है
__block typeof(self) tmpSelf = self;
तथा
__weak typeof(self) tmpSelf = self;
यहाँ बिल्कुल वैसा ही?
मुझे दस्तावेज़ में एक और टुकड़ा मिला:
नोट: कचरा-एकत्र किए गए वातावरण में, यदि आप एक चर पर दोनों
__weakऔर__blockसंशोधक लागू करते हैं , तो ब्लॉक यह सुनिश्चित नहीं करेगा कि इसे जीवित रखा गया है।
तो, मैं पूरी तरह से हैरान हूँ।