दिलचस्प पोस्ट
SASS: बेतरतीब ढंग से एक सूची से पृष्ठभूमि छवि उठाओ पायथन संदर्भ तेजी से परीक्षण के लिए पोस्टग्रेएसक्यूडी अनुकूलित करें Parallelizing GDI + छवि रीसाइज़िंग। नेट एंट में contrib.jar गतिशील रूप से शामिल कैसे चींटी एक डिवीजन को शेष चौड़ाई भरें टेम्पलेट क्लास मित्र के साथ क्लास टेम्प्लेट, वास्तव में यहां क्या हो रहा है? पायथन में एक सूची की गहरी कॉपी करें मैं Visual Studio compile त्रुटि को कैसे ठीक कर सकता हूँ, "प्रोसेसर आर्किटेक्चर के बीच बेमेल"? सूची गतिशील जोड़ें आइटम दिखाएं रेल पर रूबी और रूबी में क्या अंतर है? $ .ajax () में डुप्लिकेट एजेक्स अनुरोध के लिए सरणी को पास करें Android इनपुट कनेक्शन त्रुटि Xhr के माध्यम से JQuery Ajax प्रगति जावास्क्रिप्ट एक नोड के XPath मिलता है

बनाम init के बीच का अंतर]

क्या कोई मुझे बता सकता है कि इनके साथ एक अस्थायी सरणी घोषित करने में क्या अंतर है:

NSMutableArray *array = [NSMutableArray array]; 

तथा

 NSMutableArray *array = [[NSMutableArray alloc] init]; 

क्योंकि शुरुआत में मैं alloc के साथ अपने सभी arrays घोषणा कर रहा था, और अगर एक निश्चित समारोह के अंत में मैं alloc के साथ बनाई गई सरणी लौटा, मुझे याद है कि स्मृति रिसाव की समस्याओं के कारण, कि सरणी autorelease था।

अब पहली घोषणा का उपयोग करने के लिए मुझे कुछ भी रिलीज करने की आवश्यकता नहीं है

धन्यवाद

वेब के समाधान से एकत्रित समाधान "बनाम init के बीच का अंतर]"

क्योंकि शुरुआत में मैं alloc के साथ अपने सभी arrays घोषित कर रहा था और अगर एक निश्चित समारोह के अंत में मैं alloc के साथ बनाया सरणी लौटे है कि ऑटोरेयर कृपया था, क्योंकि स्मृति रिसाव समस्याओं अब पहले घोषणा का उपयोग करने के लिए मुझे कुछ भी रिलीज करने की ज़रूरत नहीं है

यह वास्तव में सही है जब आप किसी ऑब्जेक्ट "vend" करते हैं लेकिन अन्य मामलों में, जब आप आईओएस पर कोई ऑब्जेक्ट बनाते हैं, जहां आपके पास एक तैयार ऑररेलेज़ेड ऑब्जेक्ट प्राप्त करने और रिलीज़ होने के बाद आलोक को फोन करने में कोई विकल्प होता है, तो ऐप्पल चाहता है कि आप आलोक का इस्तेमाल करें और रिलीज करें, क्योंकि यह ऑब्जेक्ट के जीवनकाल में रहता है छोटा और अपने नियंत्रण में

यहां समस्या यह है कि आटोरेलेज्ड ऑब्जेक्ट ऑटोरिवेट पूल में रहते हैं और जब तक कि पूल समाप्त नहीं हो जाता तब तक ढेर हो सकता है।

देखने के लिए एक अन्य चीज लूप है आप इसके बारे में अवगत किए बिना ऑटोरेलेज़ ऑब्जेक्ट उत्पन्न कर सकते हैं, और वे पूल में बस ढेर कर देते हैं समाधान लूप की शुरुआत में अपना स्वयं का ऑटोरियोज पूल बनाना है और इसे लूप के अंत में रिलीज करना है, ताकि प्रत्येक बार लूप के माध्यम से ऑब्जेक्ट्स को रिलीज़ किया जा सके।

संपादित करें – 12/18/2011: लेकिन आईओएस 5 और एआरसी के आगमन के साथ, ऑटोरेक्लेज़ तंत्र बहुत अधिक कुशल है, और release जैसी कोई चीज नहीं है, इसलिए आलोक-इनट और एक सुविधा निर्माता के बीच भेद एक ऑटोरेलेज़ ऑब्जेक्ट विवादास्पद हो जाता है (यह भी अब एक autorelease पूल (छद्म-) वस्तु के बजाय एक @autoreleasepool ब्लॉक है।)

array वर्ग पद्धति स्वयं द्वारा एक आटोरेलेज़ेड सरणी का उत्पादन करती है, जिसका अर्थ है कि आपको इसे मैन्युअल रूप से रिलीज़ नहीं करना चाहिए (और नहीं होना चाहिए)