मुझे लगता है कि स्मृति चेतावनी हो रही है और इसलिए मैं, लीक को खोजने के लिए, स्मृति, आदि के अधिक कुशल उपयोग करने के कोशिश कर रहा हूँ उपकरण की मदद से एक iPhone अनुप्रयोग है। अन्य चीजों के अलावा, मैं किसी भी ऑटोरेलेज्ड ऑब्जेक्ट्स को लेने और मैन्युअल एलोक/इनिट/रिलीज ऑब्जेक्ट्स के साथ प्रतिस्थापित करने की कोशिश कर रहा हूं। हालांकि, कुछ एपीआई कॉल में 'init' संस्करण नहीं दिखता है (नीचे कोड देखें)।इंस्ट्रूमेंट्स लीक और ऑब्जेक्ट ऑलोक का उपयोग करना: क्या ऑटोरेलेज्ड ऑब्जेक्ट्स लीक के रूप में गिना जाता है?
अगर मैं एपीआई 'में फोन' और वापस अनिवार्य रूप से autoreleased वस्तुओं मिलता है, इन वस्तुओं उपकरण में लीक के रूप में दिखाई कर सकते हैं: मैं बेशक कुछ बुनियादी गलतफहमी है? ऐसा लगता है कि मैं इस व्यवहार को इंस्ट्रूमेंट्स में देखता हूं।
यदि हाँ 2 करने के लिए, मैं सिर्फ कोई 'गैर autorelease' वैकल्पिक हो, तो अनदेखा कर देना चाहिए और मैं एक एपीआई कि मैं जरूरत उपयोग कर रहा हूँ? इसके अलावा, अगर इस कोड को बहुत कुछ कहा जाता है, तो क्या मुझे पूरी तरह से एल्गोर पर पुनर्विचार करना चाहिए?
यहां मेरे एप्लिकेशन से कुछ उपयोगिता कोड है जिसे बहुत कुछ कहा जाता है। मूल रूप से निर्धारित करता है कि क्या दो तिथियां अर्थपूर्ण रूप से 'बराबर' हैं। और रिहाई इस स्मृति लीक को कम जब बाद में उपकरण में भाग गया के रूप में मैं मैन्युअल NSDate बनाने के लिए शुरू कर दिया था (- मैं बाहर टिप्पणी की कोड में छोड़ दिया है ताकि आप सुधार के प्रकार देख सकते हैं मैं अपने codebase में के बाद जा रहा हूँ) जिसने मदद की। हालांकि, मैं अब भी तारीख घटक जिन वस्तुओं पर मेरा मानना है कि लीक कर रहे हैं ... लेकिन यह एक API कॉल है (कोड स्वरूपण के लिए खेद है, लेकिन मैं इतना इस पर सुधार करने के लिए नहीं कर पा रहे):
+ (BOOL)isDayEqualToDay:(NSDate*)date anotherDate:(NSDate*)anotherDate
{
NSCalendar *cal = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar];
//NSCalendar *cal;
NSDateComponents *componentsFromDate, *componentsFromAnotherDate;
NSUInteger unitFlags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit;
//cal = [NSCalendar currentCalendar];
componentsFromDate = [cal components:unitFlags fromDate:date];
componentsFromAnotherDate = [cal components:unitFlags fromDate:anotherDate];
BOOL bDatesEqual = ([componentsFromDate year] == [componentsFromAnotherDate year] &&
[componentsFromDate month] == [componentsFromAnotherDate month] &&
[componentsFromDate day] == [componentsFromAnotherDate day]);
[cal release];
return bDatesEqual;
/*
return (
[componentsFromDate year] == [componentsFromAnotherDate year] &&
[componentsFromDate month] == [componentsFromAnotherDate month] &&
[componentsFromDate day] == [componentsFromAnotherDate day]
);*/
}
मुझे लगता है कि घटक FromDate और घटकFromAnotherDate लीक के रूप में दिखाई दे रहे हैं लेकिन वहां केवल वस्तुएं एनएसडीएटी एपीआई कॉल (ऑटोरेलेज्ड) से लौट आईं। यह सुनिश्चित नहीं है कि मैं इसे और अधिक कुशल बनाने के लिए वास्तव में और क्या कर सकता हूं और मैं अपनी समझ पर सवाल उठा रहा हूं कि उपकरण का सर्वोत्तम उपयोग कैसे करें। सुझाव?
जीडीसी डीबग करने के लिए इंस्ट्रुमेंट्स का उपयोग करने का कोई तरीका नहीं लगता है। क्या कोई और तरीका है? –