दिलचस्प पोस्ट
.NET ढांचे स्रोत कोड में कदम नहीं उठा सकते हैं पायथन डिक्शनरी में चाबी का आदेश जेनकिंस सीआई पर एक्सेल खोलें मेरे पास पूर्णांकों की एक सरणी है, मैं प्रत्येक एक mysql क्वेरी में (php में) कैसे उपयोग करूँ? MathML और जावा पायथन सी प्रोग्राम उपप्रोसेस "आईटीआर में लाइन के लिए" पर लटका हुआ है ओपनजीएल ES2 अल्फा परीक्षण समस्याएं प्रणाली ( "थामने"); – यह गलत क्यों है? एक निश्चित मूल्य के लिए एक mongodb दस्तावेज़ में सभी सरणी तत्वों को कैसे परिवर्तित करें? पायथन में उपयोगकर्ता इनपुट के बाद "नाम: त्रुटि: नाम '' परिभाषित नहीं है ' संकल्प एक दूसरे के बाद वादे (यानी अनुक्रम में)? क्लाइंट-साइड जावास्क्रिप्ट में बेस 64 एन्कोडिंग और डीकोडिंग सी # असिंक – यह कैसे काम करता है? VB.NET में DirectCast () और CType () के बीच का अंतर एंड्रॉइड – गतिविधि विखंडन गतिविधि?

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