2009-12-02 15 views
14

मैंने इस बहुत अच्छे संदर्भ को संदर्भित किया है: https://stackoverflow.com/questions/1282830/uiimagepickercontroller-uiimage-memory-and-more लेकिन मुझे कुछ गंभीर समस्याएं हैं। एक फोटो लेने के बाद, मुझे एक स्मृति चेतावनी मिलती है। यह पहली तस्वीर है जो मैं लेता हूं, दूसरा या तीसरा नहीं।UIImagePicker का उपयोग करने के बाद मेमोरी चेतावनी

मैं सोच रहा था कि ऐसा इसलिए है क्योंकि मेरे पास एप्लिकेशन निर्देशिका से स्क्रॉलिंग दृश्यों में लोड किए गए कुछ छोटे jpegs हैं। एकमात्र समाधान जो मैं सोच सकता हूं वह है कि मेरे मुख्यदृश्य में सब कुछ उतारना है जबकि UIImagePicker सक्रिय है, और बाद में सब कुछ फिर से लोड करें, लेकिन मुझे यकीन नहीं है कि यह सही समाधान है और मुझे यकीन नहीं है कि यह कैसे करें।

क्या UIImagePicker का उपयोग करता है जो अधिक मेमोरी है? मुझे अभी तक छवि को प्रसंस्करण या प्रदर्शित करने तक भी नहीं मिला है। मुझे स्मृति चेतावनी मिलती है, भले ही मैं छवि को फेंक दूं।

किसी भी मदद की सराहना की।

उत्तर

9

हां, ऐसा होता है। याद रखने की बात यह है कि स्मृति चेतावनी प्राप्त करना ठीक है, इसका मतलब यह नहीं है कि आप एक बुरे व्यक्ति हैं, आपको बस यह सुनिश्चित करने की ज़रूरत है कि आपका एप्लिकेशन दुर्घटनाग्रस्त नहीं हो या स्मृति चेतावनी के जवाब में उलझन में न हो।

विशेष रूप से, आपको यह समझने की आवश्यकता है कि UIViewController की डिफ़ॉल्ट कार्रवाई अपने दृश्यों को अनलोड करना है यदि वे दिखाई नहीं दे रहे हैं, और पूर्ण स्क्रीन छवि पिकर दिखने पर वे दिखाई नहीं देंगे।

+0

ठीक है, इसलिए यदि मैं सही ढंग से समझता हूं, तो मुझे UIImagePicker प्रदर्शित होने पर मेरा दृश्य छिपाने की आवश्यकता नहीं है, क्योंकि व्यू कंट्रोलर पहले से ही करता है, और मुझे छवि के बाद मेमोरी चेतावनी प्राप्त करने की अनुमति है .. जब तक मैं कुछ भी विदेशी नहीं कर रहा हूं (जैसे एक पूर्ण रिज़ॉल्यूशन छवि प्रदर्शित करना?) –

+0

यदि आपका ऐप "बहुत अधिक" मेमोरी का उपयोग कर रहा है, और जब आप कम स्मृति चेतावनी प्राप्त करते हैं तो इसका "पर्याप्त" मुक्त नहीं होता है, ओएस संभावित रूप से ऐप को मार सकता है। जहां तक ​​मुझे "पर्याप्त" और "बहुत अधिक" के लिए पता है, वहां कोई सटीक मूल्य नहीं है। –

+0

इस उत्तर से (http: // stackoverflow।कॉम/प्रश्न/457568/आईफोन-डेवलपमेंट-मेमोरी-सीमा-के लिए-iphone-application/457730 # 457730) ऐसा लगता है कि आपको लगभग 22 एमबी उपयोग पर चेतावनी मिलती है। हालांकि ऐप्पल ने आधिकारिक तौर पर इसकी पुष्टि नहीं की है। –

1

सबसे अधिक संभावना आप uneditted छवियों का उपयोग कर रहे हैं, और वे 1400x1300 जो विशाल और w बीमार दुर्घटना अपने अनुप्रयोग, मैं iphone देशी 320x480 संकल्प के लिए चित्रों का आकार बदलने का सुझाव देते है की पूर्ण विकसित आकार में वापस आ जाओ, ठीक करना चाहिए आपकी समस्या

+1

हाय, छवियों मैं सेट करने से पहले खारिज मैं प्रदर्शित कर रहा हूं उससे कहीं छोटा है, और कैमरे को चित्र लेने के बाद मुझे स्मृति चेतावनी मिलती है और इससे पहले कि मुझे छवि का आकार बदलने का मौका मिले, इसलिए मुझे यकीन नहीं है कि यह समस्या है। –

+0

हाँ, ऐसा लगता है कि आपके पास – Daniel

+0

पर अन्य मेमोरी लीक हो सकती हैं ताकि आप तस्वीर ले सकें और इससे पहले कि आप इसे चुन सकते हैं? – Daniel

45

उन सभी लोगों के लिए जो अभी भी वास्तविक उत्तर की तलाश में हैं और अस्पष्ट बयान नहीं हैं, फिर यहां देखें। मैंने देखा कि सैकड़ों उत्तर हैं जैसे कि "अपनी याददाश्त को संभालें" लेकिन यह कुछ भी जवाब नहीं देता है। उम्मीद है कि यह वहाँ बाहर किसी और में मदद करता है ...

बदलें निम्नलिखित

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [imageView setImage:image]; 
    [self dismissModalViewControllerAnimated:YES]; 
} 
करने के लिए

निम्नलिखित तो अपने मॉडल दृश्य अपनी छवि ...

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; 
    [self dismissModalViewControllerAnimated:YES]; 
    [imageView setImage:image]; 
} 
+0

यह वास्तव में एक अच्छा विचार है। जब मैं डीबग करता हूं, तो मुझे छवियां सही मिलती हैं, लेकिन मेरी छवि दृश्य इसे गायब कर रहा था। लेकिन जल्दी से मोडल दृश्य को खारिज कर, आकर्षण की तरह काम करते हैं। धन्यवाद! एक ऊपर! – karim

+0

तो यह क्यों काम करता है? –

संबंधित मुद्दे