2012-11-03 62 views
0

当按下按钮从前到后翻转相机时,我的UIImagePickerController冻结,相机关闭。这是我如何从项目中初始化项目中的图像选择器控制器对象(其余代码已被省略),因为它与UIimagepickercontroller对象无关。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]; 

} 

回答

1

只是为了规则,更改您的代码。相反的:

​​

写在.h文件中:

@property (nonatomic, strong) UIImagePickerController * imgPicker; 

不是在您.m文件合成它:

imgPicker = _imgPicker; 

旁边每次调用自此属性调用。

+0

这工作。感谢 – Andrew

-2
  • 首先,你不应该在viewdidload方法中分配init。在-init方法中进行所有的分配。
  • 按照edzio27的建议添加属性。
  • 再次测试

如果问题仍然存在: - 检查u的 “接收内存警告”。在内存警告的情况下,再次调用你的viewdidload方法。如果你保持你的分配init的方法,你将每次创建新的实例。

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

+0

顺便说一下,是不是ios 6. – Anup

+0

很确定这不是真的。 vDL中的init没有错。除非它触发您的应用程序级代码手动重新加载VC,否则不会在内存警告中调用vDL。 –