当我使用UIImagePickerControllerSourceTypeCamera
时,我收到“已收到内存警告。级别= 1”。
如果我在进入应用程序后立即访问摄像头,我会收到“已接收内存警告。级别= 1”,但是当我在访问应用程序中的所有其他功能后选择摄像头选项时,应用程序会在调试器控制台显示时崩溃
收到内存警告。等级= 1个
程序接收信号:“EXC_BAD_ACCESS”。
为什么会这样?在构建和分析时,我没有收到任何内存泄漏通知。
if(actionSheet.tag == 1){
addButton.enabled = YES;
UIImagePickerController * picker = [[[UIImagePickerController alloc] init] autorelease];
picker.delegate = self;
if (buttonIndex == 0)
{
NSLog(@"selecting camera");
picker.sourceType = UIImagePickerControllerSourceTypeCamera;
[self presentModalViewController:picker animated:YES];
}
else if (buttonIndex == 1){
NSLog(@"choosing album");
picker.sourceType = UIImagePickerControllerSourceTypeSavedPhotosAlbum;
[self presentModalViewController:picker animated:YES];
}
else
{
//NSLog(@"cancel");
}
}
答案 0 :(得分:0)
EXC_BAD_ACCESS通常与泄漏相反:过度释放的对象。保留计数的对象已降为0,但您仍然在某处保持指向它的指针。一旦访问此指针,您可能会收到EXC_BAD_ACCESS或其他奇怪的行为。
还有其他可能性。它只是意味着你试图访问你不拥有的内存。
在你的情况下,这不一定与UIImagePickerController有关。选择器的呈现只会导致发布内存警告,并且响应此警告,您的应用程序会在各个不同的位置释放内存。我的猜测是,这些对象中至少有一个之前已经被释放过,现在是一个悬空指针。
要调试它,您应该尝试NSZombieEnabled。有关发现此类错误的进一步帮助,请参阅此问题:EXC_BAD_ACCESS signal received
P.S。:您应该在搜索EXC_BAD_ACCESS
时找到它答案 1 :(得分:0)
这是因为UIImagePicker解雇了你的ViewDidUnload。 这样所有的实例都变成了僵尸。 因此,处理这个问题的方向是 “为什么UIImagePicker”触发了ViewDidUnload。
我遇到了同样的问题,但还没有找到解决方案。