簡體   English   中英

UIImagePickerControllerSourceTypeCamera占用內存

[英]UIImagePickerControllerSourceTypeCamera hogging up memory

我正在使用UIImagePickerController,以便讓用戶通過拍攝新照片或從圖庫中選擇圖像來選擇我的應用中的圖像。 使用畫廊,該應用程序工作正常。 但是,如果我使用相機作為源,應用程序會占用大量內存,並最終在變得非常慢后被殺死。

有人可以告訴我使用UIImagePickerControllerSourceTypeCamera的最佳方式。

這是我正在使用的代碼

if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    return;
picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
[[self navigationController] presentModalViewController:picker animated:YES];
[picker release];

使用UIImagePickerController沒有任何技巧 - 它使用了一堆內存,你只需要忍受它。 完成后釋放它就像它獲得的效率一樣高效。

不過,這與圖像選擇器本身有關。 問題的另一部分是你正在使用它返回給你的UIImage對象。 根據iPhone的標准,這些都是大對象,而且你真的無法將其中的許多內容留在內存中。 如果您正在顯示圖像,那就是生命,但是可以通過UIImageJPEGRepresentation()和NSData的writeToFile:atomically:安全地將不在屏幕上的圖像卸載到文件中。

如果確實需要顯示多個圖像,請考慮將其縮小。 相機的1600x1200已經比屏幕大得多,並且有多個屏幕上的圖像,它甚至更加過分。 縮放到較低分辨率可顯着降低內存需求。 執行此操作的示例代碼並不難找到 - 例如,請參閱UIImagePickerController相機預覽是橫向應用程序中的縱向

該泄漏的UIImagePickerController記憶,注意這里和后7層或8的用途使您的應用程序崩潰。 您需要在應用程序的生命周期中創建單獨的UIImagePickerController以避免此Apple缺陷。

我知道這個答案是在事實之后,但我有同樣類型的問題通過鏈接iPhone SDK 2.2和更高版本解決了它自己。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM