AFAIK, __block
जब आप बदल रहे हैं, ब्लॉक के अंदर, पता है कि एक चर (ब्लॉक के बाहर घोषित) पता चलता है।क्या एआरसी मुझे बताएगा कि मुझे __block का उपयोग कब करना चाहिए?
लेकिन, अगर मैं वैरिएबल पॉइंट्स को उस मान को बदल रहा हूं लेकिन पॉइंटर वही रहता है? उदा।, अगर मेरे पास NSMutableArray *array
है और क्या मैं ब्लॉक के अंदर [array addObject:object]
कर रहा हूं? इस मामले में, मैं सूचक array
नहीं बदल रहा हूं, लेकिन मैं उस मान को बदल रहा हूं जो इसे इंगित करता है। तो, क्या मुझे अभी भी का उपयोग NSMutableArray *array
घोषित करने में करना चाहिए?
संकलक अनुकूलन के बारे में क्या ? '__block' यह संकेत दे सकता है कि कोई ऑब्जेक्ट कभी नहीं बदलता है, और यदि' NSArray' को रेखांकित किया गया था, तो क्षमता के बाद की कॉल गलत हो सकती है। – Dani
'__block' इंगित करता है कि चर बदल सकता है। चर यानी '__block' या एक कॉन्स्ट-कॉपी (जैसा डिफ़ॉल्ट है) है, ऑब्जेक्ट पर एक विधि को कॉल करने पर कोई प्रभाव नहीं पड़ेगा। – bbum
लेकिन क्या होता है यदि चर (एनएसएआरएआरई *) एक स्व संपत्ति है? क्या __block को जोड़ा जाना चाहिए? – Amnysia