2009-12-02 25 views
14

Bu çok iyi referansa değindim: https://stackoverflow.com/questions/1282830/uiimagepickercontroller-uiimage-memory-and-more ama çok ciddi sorunlar yaşıyorum. Bir fotoğraf çektikten sonra bir hafıza uyarısı alırım. Bu aldığım ilk fotoğraf için, ikinci ya da üçüncü değil.UIImagePicker bir kez kullanıldıktan sonra bellek uyarısı

Bunun nedeni, uygulama dizininden kayan görünümlere yüklenen birkaç küçük jpegim var. Düşünebildiğim tek çözüm, UIImagePicker etkinken ana sayfamdaki her şeyi boşaltmak ve sonradan her şeyi tekrar yüklemektir, ancak bunun doğru çözüm olduğundan emin değilim ve bunu nasıl yapacağımı bilmiyorum.

UIImagePicker o fazla bellek kullanıyor mu? Henüz çekmediği görüntüyü işleme koyma veya görüntülemeye bile çıkmadım. Resmi attırsam bile bir uyarı mesajı alıyorum.

Herhangi bir yardım için teşekkür ederiz.

cevap

9

Evet, bu olur. Hatırlanması gereken şey, bir hafıza uyarısı almanın doğru olmamasıdır, bu kötü bir kişi olduğunuz anlamına gelmez, yalnızca uygulamanızın bellek uyarısına yanıt olarak çökmemesi veya karıştırılmaması gerekir. Özellikle, UIViewController'ın varsayılan eyleminin görünür olmadığında görünümlerini kaldırması ve tam ekran görüntü seçicisinin gösterilmesi durumunda görünmeyeceklerini anlamak zorundasınız.

+0

Doğru, eğer doğru anlıyorsam, UIImagePicker görüntülendiğinde, görünüm denetleyicisi bunu zaten görüntülediğinde ve bir görüntü alındıktan sonra bir bellek uyarısı almama izin verdiğimde, görünümümü saklamaya gerek yok. egzotik bir şey yapmıyorum (örneğin, tam çözünürlükte bir görüntüyü görüntülemek gibi) –

+0

, uygulamanız "çok fazla" bellek kullanıyorsa ve düşük bellek uyarısı aldığınızda "yeterli" değilse, OS, uygulamayı potansiyel olarak öldürebilir. "Yeterince" ve "çok fazla" bildiğim kadarıyla kesin değer yoktur. –

+0

Bu yanıttan (http: // stackoverflow.com/sorular/457568/iphone-geliştirme-hafıza-sınırlaması-for-iphone-uygulaması/457730 # 457730) Eğer kullanım 22MB civarında uyarı almak gibi görünüyor. Her ne kadar Apple resmi olarak onaylamadıysa da. –

1

Eğer uneditted görüntüleri kullanıyor ve geri iri ve w hasta kazasında uygulamanızı i iphone yerli 320x480 çözünürlük için resimleri yeniden boyutlandırma öneririz olan 1400x1300 dolu şişmiş boyutta gel Büyük olasılıkla, düzeltmek gerekir senin sorunun

+1

Hi, I görüntüleri ayarlamadan önce görevden aşağıdaki Ekran görüntüsü bundan daha küçüktür ve fotoğraf çekildikten sonra ve görüntüyü yeniden boyutlandırma şansı elde etmeden önce bellek uyarısını alıyorum, bu yüzden sorunun bu olduğundan emin değilim. –

+0

Evet, – Daniel

+0

gibi bir yerde başka bellek sızıntılarına sahip olabileceğinize göre, resmi çektiğinizde ve hatta daha sonra da onu tıklayabilmeniz için önce? – Daniel

45

Hala gerçek cevabı arayan ve belirsiz bir açıklama arayan tüm insanlar için buraya bakın. "Hafızanı tut" gibi yüzlerce cevap olduğunu fark ettim ama bu hiçbir şeye cevap vermiyor.

Değişim için

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

aşağıdaki ... Bu orada bir başkası yardımcı Umut böylece kalıcı görünüm imajınızı ...

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

Bu gerçekten iyi bir fikir. Hata ayıkladığımda, görüntüleri doğru buldum, ancak imageView'm eksikti. Ancak modal görünümü erken bitirmek, çekicilik gibi çalışır. Teşekkürler! 1 Yukarı! – karim

+0

Peki bu neden çalışıyor? –

İlgili konular