UIImagePickerController当相机翻转时冻结

我的UIImagePickerController冻结,相机closures,当button从前到后翻转相机被按下。 这是我如何初始化项目中的图像select器控制器对象(其余代码已被省略),因为它与UIimagepickercontroller对象无关。

//In my .h file UIImagePickerController * imgPicker; //in my .m file -(void)viewDidLoad { imgPicker = [[UIImagePickerController alloc] init]; imgPicker.delegate = self; imgPicker.allowsEditing = YES; } -(void) takePicture { imgPicker.sourceType = UIImagePickerControllerSourceTypeCamera; [self presentViewController:imgPicker animated:YES completion:NULL]; } -(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { masterImage.image = [info objectForKey:UIImagePickerControllerEditedImage]; if(masterImage.image == nil) { masterImage.image = [info objectForKey:UIImagePickerControllerEditedImage]; } [self dismissModalViewControllerAnimated:YES]; } -(void) imagePickerControllerDidCancel:(UIImagePickerController *)picker{ [self dismissModalViewControllerAnimated:YES]; } -(void) releaseOutlets { [imgPicker release]; } 

只是为了规则,改变你的代码。 代替:

 UIImagePickerController * imgPicker; 

写在你的.h文件中:

 @property (nonatomic, strong) UIImagePickerController * imgPicker; 

比在你的.m文件中综合它:

 imgPicker = _imgPicker; 

接下来每次打电话给这个属性都会跟自己打电话。

  • 首先,你不应该在viewdidload方法中分配init。 在-init方法中做所有的分配。
  • 按照edzio27的build议添加属性。
  • 再次testing

如果问题仍然存在: – 检查你是否“收到记忆警告”。 在内存警告的情况下,再次调用你的viewdidload方法。 如果你保持你的分配init的方法,你将每次创build新的实例。

我们遇到了与MPMoviePlayerController类似的问题。 不知道你是否有同样的问题。