2013-12-11 28 views
8

我面臨錯誤應用程序因內存壓力而終止當我使用UIImagePickerController相機捕捉某些圖像時。在iOS 7中使用相機時由於內存壓力而終止的應用程序

我先收到內存警告,然後突然應用程序崩潰。這個問題是在iOS 7中,特別是在iOS 6中,它工作正常。

有人知道爲什麼在使用相機的iOS 7中出現此內存問題。

注:我試圖儘量減少RAM的使用,因爲它也可能是這種內存壓力的原因。但仍然受到警告。

+2

使用Instruments中的Allocations工具可以準確查看RAM的使用情況以及分配時間。 – NSAdam

+0

我在iOS 7中也在iPhone 5中進行了測試。它在iPhone 5中工作正常。只有在iPad mini中獲得此警告。 –

+0

這是安靜的問題與ipad mini – Saurabh

回答

5

我只是在類似的帖子上發佈了這個答案(iOS 7 UIImagePicker preview black screen)。這就是我說的:

大約5個月前,我的團隊發現了UIImagePickerController的內存泄漏。每個實例都會以指數方式減慢應用程序(即第一個alloc-init有1秒延遲,秒有2秒延遲,第三個有5秒延遲)。最終,我們有30-60次延遲(類似於你正在經歷的)。

我們通過繼承UIImagePickerController並使其成爲Singleton來解決問題。這樣它只能初始化一次。現在我們的延遲很小,我們避免了泄漏。如果子類不是一個選項,請在您的viewController中嘗試一個類屬性,然後像這樣懶加載它。

-(UIImagePickerController *)imagePicker{ 
    if(!_imagePicker){ 
     _imagePicker = [[UIImagePickerController alloc]init]; 
     _imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera; 
} 
    return _imagePicker; 
} 

然後,你可以把它像後:

[self presentViewController:self.imagePicker animated:YES completion:nil]; 

從我可以告訴,這只是用的UIImagePickerController iOS中的一個問題7.以前的版本似乎是罰款。

+1

迷人的東西。 - 請注意,您的解決方案_assumes圖像選擇器將僅用於拍攝照片(相機),但情況並非如此。 – matt

+0

好點。你可以隨時改變它,通過說self.imagePicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary。這個想法是,雖然你的UIImagePickerController只是初始化一次。 – eckyzero

+0

我會徹底測試,但它似乎已經解決了這個問題。 – Camus

相關問題