क्या होता है जब निम्न कोड निष्पादित होता है?क्या होता है जब निम्न कोड निष्पादित होता है? गेंद * गेंद = [[[[बॉल आवंटन] init] autorelease] autorelease];
Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];
क्या होता है जब निम्न कोड निष्पादित होता है?क्या होता है जब निम्न कोड निष्पादित होता है? गेंद * गेंद = [[[[बॉल आवंटन] init] autorelease] autorelease];
Ball *ball = [[[[Ball alloc] init] autorelease] autorelease];
एक बार जब आप वस्तु autorelease
कॉल दे दिया है, अब आप autorelease pool
को अपनी रिहाई जिम्मेदारी दे दिया है, अब यह सिर्फ तरह आपकी नहीं है यह .. यह यादृच्छिक व्यवहार यह दुर्घटना या कभी कभी नहीं हो सकता है दिखाएगा है। (
[Ball alloc]
: जब autorlease पूल इसे जारी, अगर अपनी रिहाई तो यह दुर्घटना जाएगा)
के इसे तोड़ने के नीचे चलो पर निर्भर करता है यह एक गेंद उद्देश्य यह है कि हम खुद (और इस प्रकार जारी करने के लिए की जरूरत है) पैदा करता है।
[[Ball alloc] init]
: यह उस बॉल ऑब्जेक्ट को शुरू करता है जिसे हमने अभी बनाया है।
[[[Ball alloc] init] autorelease]
: यह गेंद को वर्तमान ऑटोरेलीज पूल में जोड़ता है, इसलिए जब पूल निकाला जाता है तो इसे रिलीज़ किया जाएगा। ऐसा करने के लिए यह सही बात है, उदाहरण के लिए, हम गेंद को एक विधि से वापस करने जा रहे थे।
[[[[Ball alloc] init] autorelease] autorelease]
: यह फिर से गेंद ऑब्जेक्ट को स्वत: चलाता है। यह 100% गलत है। alloc
स्वामित्व का एकमात्र दावा है जिसे हमें संतुलित करने की आवश्यकता है, इसलिए गेंद को अब कई बार रिलीज़ किया जाएगा। यह किसी भी तरीके से प्रकट हो सकता है, लेकिन यह शायद दुर्घटनाग्रस्त हो जाएगा।
मैं इसे आजमाता हूं [[[[बॉल एलोक] init] autorelease] autorelease]; और यह दुर्घटनाग्रस्त नहीं होगा। क्या आप कृपया मुझे बता सकते हैं कि यह कब दुर्घटनाग्रस्त हो जाएगा? –
@ सचिनकुमारम: यह अनिर्धारित व्यवहार है। कोई गारंटी नहीं है। आम तौर पर, इसे अधिक ऑब्जेक्ट आवंटित किए जाने पर क्रैश होने की अधिक संभावना होती है। – Chuck
संक्षिप्त उत्तर: एक दुर्घटना आती है।
यह बिल्कुल सटीक नहीं है। पूल समाप्त होने तक यह वैध रहेगा। यह अचानक क्रैश होने शुरू नहीं होगा क्योंकि आप ऑटोरेलेज्ड थे। – Chuck
हां, जो मैंने पिछली पंक्ति में लिखा था। जैसा कि हम नहीं जानते कि दिए गए कोड से घिरा हुआ क्या है, हम कभी भी इसके बारे में निश्चित नहीं हो सकते हैं। (चाहे वह निकाला गया हो या नहीं।) – Ravin