iphone - Retain count = 0 in other function? memory-management problem? -
मैंने हेडर-फाइल में एक NSMutableArray को घोषित किया:
NSMutableArray * myMuArr;
और
<पूर्व> @property (nonatomic, retain) NSMutableArray * myMuArr;
.एम फ़ाइल में मुझे एक अन्य वर्ग से एक प्रतिनिधि मिला है:
- (शून्य) कियाग्रेडडेटा: (NSArray *) theArray {self .myMuArr = [[[एनएसएमयूटीएबलएआरआरएआरओएल] इनिटवेटअरेरे: माइमआर्र] बनाए रखा गया; }
अगर मैं self.mymuarr को cellForRowAtIndexPath में प्रवेश करना चाहता हूं तो यह खाली है (मैं सरणी की संख्या को बनाए रखने की जाँच की और यह 0 है)
मैं क्या कर रहा हूँ गलत
बेशक यह dealloc में जारी की है, नहीं, और कहाँ।
मैं किसी भी मदद के लिए बहुत आभारी होंगे: 0)
< Div class = "post-text" itemprop = "text">
मुझे नहीं लगता कि आपको समझना है कि कब बनाए रखने और रिहाइश करें पर एक नज़र डालें । इसे पढ़ने के माध्यम से पढ़ें और इसे समझें और उन लेखों को पढ़ें जो इसे लिंक करते हैं। यह आपको बहुत मदद करेगा। आईफोन पर इसे समझना जरूरी है।
आपकी सरणी 3 गुणा बरकरार रखी जा रही है, लेकिन आपको केवल एक ही आवश्यकता है: (1) जब आप आलोक / इनट पर कॉल करते हैं, तो आप एक सरणी प्राप्त करते हैं जो आपके पास है (यह रोका गया है)। (2) जब आप को बुलाया जाता है, तो यह एक अतिरिक्त बनाए रखना है। (3) आपका सेटर स्वयं। माइमआर्पर को @ प्रॉपर्टी में रखने के लिए परिभाषित किया गया था, इसलिए जब आप सेटटर विधि का उपयोग करके पॉइंटर को असाइन करते हैं तो इसे फिर से बरकरार रखा जाता है।
आप आमतौर पर कोड को इन दो तकनीकों का उपयोग करते हैं, दोनों सही:
<पूर्व> - (शून्य) कियाग्रेडडेटा: (NSArray *) theArray {NSMutableArray * arr = [[NSMutableArray alloc] initWithObjects: obj1, obj2, शून्य]; Self.myMutArr = arr; [आगमन रिहाई]; }
या arrayWithObjects का उपयोग करते हुए, जो आपको एक ऑटोरेलेज़ेड सरणी प्रदान करता है जिसे आपको बनाए रखने की आवश्यकता होती है अगर आप अपनी मेमोरी स्पेस का स्वामित्व लेना चाहते हैं और इसे चारों ओर रखना चाहते हैं आपका सेटर ऐसा करेगा:
- (शून्य) कियाग्रेडडेटा: (NSArray *) theArray {self.myMutArr = [NSMutableArray arrayWithObjects: obj1, obj2, शून्य]; }
Comments
Post a Comment