首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UIImagePickerControllerSourceTypeCamera占用内存

UIImagePickerControllerSourceTypeCamera占用内存
EN

Stack Overflow用户
提问于 2009-02-19 15:37:25
回答 3查看 4.3K关注 0票数 5

我使用UIImagePickerController是为了让用户在我的应用程序中通过拍摄新照片或从图库中选择图像来选择图像。使用图库,这个应用程序运行良好。但如果我使用摄像头作为信号源,应用程序会消耗大量内存,最终会在变得非常慢的情况下被杀死。

有人能告诉我使用UIImagePickerControllerSourceTypeCamera的最佳方式吗?

这是我正在使用的代码

代码语言:javascript
复制
if(![UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    return;
picker = [[UIImagePickerController alloc] init];
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
picker.delegate = self;
[[self navigationController] presentModalViewController:picker animated:YES];
[picker release];
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-02-19 21:47:39

正如here所指出的那样,UIImagePickerController会泄漏内存,使用7或8次后会导致应用程序崩溃。你需要在你的应用程序的生命周期中创建一个单独的UIImagePickerController来避免这个苹果的缺陷。

票数 2
EN

Stack Overflow用户

发布于 2009-02-19 23:03:10

使用UIImagePickerController没有什么诀窍--它使用大量内存,您只能接受这一点。当你完成它的时候,发布它是最有效的。

不过,这是关于图像选择器本身的。问题的另一部分是如何处理它返回给您的UIImage对象。按照iPhone的标准,这些都是很大的对象,你真的负担不起在内存中保存很多这些对象。如果你正在显示一个图像,那就是生活,但是没有显示在屏幕上的图像可以通过UIImageJPEGRepresentation()和NSData的writeToFile:atomically:安全地卸载到文件中。

如果您确实需要显示多个图像,请考虑缩小它们。这款相机的1600x1200已经比屏幕大得多了,而且屏幕上有多张图像,这就更多了。缩放到较低的分辨率可以显著降低内存需求。执行此操作的示例代码不难找到--有关示例,请参阅UIImagePickerController camera preview is portrait in landscape app

票数 3
EN

Stack Overflow用户

发布于 2009-03-25 18:04:12

我知道这个答案是事后的,但我也有同样的问题,通过链接到iPhone SDK2.2或更高版本来解决它自己。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/565886

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档