iPhone:UIImagePickerController随机无法拍照

时间:2010-04-11 20:52:14

标签: iphone uiimagepickercontroller

我使用UIPickerViewController拍照。它的工作效率为80%,但看似随机而无法拍照。在跟踪代码时,我发现它偶尔会进入

-PinRecordNewTableViewController:viewDidUnload. 

这就是它失败的地方,因为它为所有ivars设置了nil。

@interface PinRecordNewTableViewController : UITableViewController {
}
... 
@implementation PinRecordNewTableViewController
...
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
...
        PinRecordNewPicture *pinRecordNewPicture = [[PinRecordNewPicture alloc] initWithNibName:@"PinRecordNewPicture" bundle:nil];
        pinRecordNewPicture.delegate = self;
        [self.navigationController pushViewController:pinRecordNewPicture animated:YES];    
        [pinRecordNewPicture release];  
...             
}
@interface PinRecordNewPicture : UIViewController 
...
@implementation PinRecordNewPicture
...
- (void)picturePicker:(UIImagePickerControllerSourceType)theSource {

UIImagePickerController *picker = [[UIImagePickerController alloc] init];

picker.delegate = self;
picker.sourceType = theSource;
picker.allowsEditing = YES;

[self presentModalViewController:picker animated:YES];

[picker release];
}

- (IBAction) takePicture:(id)sender {

UIImagePickerControllerSourceType source = UIImagePickerControllerSourceTypeCamera;

    if ([UIImagePickerController isSourceTypeAvailable:source]) {

       [self picturePicker:source];

    }

我做错了什么?我错过了导致它“随机”行为的东西吗?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果它调用viewDidUnload,那么您的应用很可能内存不足。这可能是一个问题,或者只是在手机中编辑大图像的结果。

答案 1 :(得分:0)

如果您尝试拍摄多张照片,请将当前照片保存到应用的“文档”区域。它释放了记忆。这样就可以避免记忆警告。

如果正在调用ViewDidUnload,您可能会考虑在didReceiveMemoryWarning中保存应用程序的相关状态并在viewDidLoad中恢复它。这是使用NSUserDefaults类

完成的