我使用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];发布于 2009-02-19 21:47:39
正如here所指出的那样,UIImagePickerController会泄漏内存,使用7或8次后会导致应用程序崩溃。你需要在你的应用程序的生命周期中创建一个单独的UIImagePickerController来避免这个苹果的缺陷。
发布于 2009-02-19 23:03:10
使用UIImagePickerController没有什么诀窍--它使用大量内存,您只能接受这一点。当你完成它的时候,发布它是最有效的。
不过,这是关于图像选择器本身的。问题的另一部分是如何处理它返回给您的UIImage对象。按照iPhone的标准,这些都是很大的对象,你真的负担不起在内存中保存很多这些对象。如果你正在显示一个图像,那就是生活,但是没有显示在屏幕上的图像可以通过UIImageJPEGRepresentation()和NSData的writeToFile:atomically:安全地卸载到文件中。
如果您确实需要显示多个图像,请考虑缩小它们。这款相机的1600x1200已经比屏幕大得多了,而且屏幕上有多张图像,这就更多了。缩放到较低的分辨率可以显著降低内存需求。执行此操作的示例代码不难找到--有关示例,请参阅UIImagePickerController camera preview is portrait in landscape app。
发布于 2009-03-25 18:04:12
我知道这个答案是事后的,但我也有同样的问题,通过链接到iPhone SDK2.2或更高版本来解决它自己。
https://stackoverflow.com/questions/565886
复制相似问题