【发布时间】:2013-08-21 08:10:50
【问题描述】:
当我在我的应用程序中打开相机时,它工作正常,但是当我在我的应用程序中导航并返回相机视图并再次尝试在 iPad 中打开我的相机时,应用程序崩溃并给我“收到内存警告”。应用程序在 iPhone 上运行良好,而这个问题只出现在 iPad 上。
我的项目没有 ARC,所以我将我的项目转换为 ARC 以希望获得良好的结果,但我的应用程序在很少导航后仍然在相机上崩溃。 谁能告诉我如何使用 iPad 相机减少内存空间,以便我的应用程序停止收到内存警告。
这是我的相机代码
if ([UIImagePickerController isSourceTypeAvailable:
UIImagePickerControllerSourceTypeCamera])
{
imagePicker=[[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType =UIImagePickerControllerSourceTypeCamera;
imagePicker.allowsEditing = NO;
//imagePicker.modalPresentationStyle = UIModalPresentationFullScreen;
[self presentViewController:imagePicker animated:YES completion:nil];
}
这是我获取图像的地方
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
[Array removeAllObjects];
[picker dismissViewControllerAnimated:YES completion:nil];
image = [info objectForKey:UIImagePickerControllerOriginalImage];
[array addObject:image];
image=nil;
}
我也尝试使用 popOverview 进行摄像头,但也没有用。
在我调用 UIImagePickerController 的 viewController 中,我使用了 5 个动画,在我在 viewWillAppear 中调用动画之前,应用程序崩溃了,所以我将动画调用更改为 ViewDidLoad 并且相机开始工作,但直到我导航到我的最后一个视图并再次打开相机。
【问题讨论】:
-
问题不在于相机。您可能没有正确丢弃使用过的和不必要的对象。
-
您是在使用 iOS 默认的相机选择器还是将相机连接到预览层或例如您是使用 OpenGL 还是 CoreImage 处理每个视频缓冲区?
-
@Desdenova 我现在正在使用 ARC,我该如何释放对象。
-
@Markus 不,兄弟我正在打开相机而不是使用 openGL
标签: iphone ios objective-c xcode ipad