如何处理iOS的系统警报消息?

时间:2013-01-17 17:45:18

标签: iphone ios delegates uiimagepickercontroller nsnotificationcenter

我有一个应用程序,我使用UIImagePickerController来使用本机相机,以便点击图片,但设备上的照片库已满。我收到一条警告信息,上面写着“无法拍照 - 没有足够的可用存储空间拍照。您可以在设置中管理您的存储空间”。我有两个选项可以点击“完成”按钮或“设置”按钮。点击其中任何一个都不会做任何事情,应用程序完全冻结。

这是我从控制台日志中得到的

Not enough space to take a picture. Available space is 0

选择器的代码

UIImagePickerController *mediaPicker = [[UIImagePickerController alloc] init];
mediaPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
mediaPicker.delegate=self;
mediaPicker.sourceType=UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:mediaPicker animated:YES];

我已经实施并尝试了所有代表,并且没有调用任何代表。

有什么方法可以实现我可以使用侦听器来检测何时发生此错误并将用户带回上一屏幕的内容?

2 个答案:

答案 0 :(得分:2)

听起来你的设备内存耗尽,系统发送了大量的“Out of Memory”通知,你的应用也收到了一个。结果您的应用程序发布了最初启动UIImagePickerController的UIViewController

现在,当您使用“完成/设置”按钮关闭imagePicker时,控件将返回到您的应用。旧的UIViewController不再存在,并且您还没有实现代码在这种情况下从头开始重新创建它。该设备看起来像冻结,但仅仅是因为您的应用没有重新绘制UI。否则app工作正常。

你可以通过在每个UIViewController中实现didReceiveMemoryWarning方法并记录来检查这种情况,如果它被调用:

- (void)didReceiveMemoryWarning
{
    NSLog(@"%@", [self description]);
    [super didReceiveMemoryWarning];
}

我最喜欢的一个错误。容易错过:))

答案 1 :(得分:1)

这听起来像是iOS中的一个错误,您应该提交雷达here