UIStoryboardPopoverSegue を介して呼び出されるビューコントローラーがあり、内部には imagePickerController を呼び出すボタンがあります。最初の呼び出しでは問題ありませんが、2 回目はクラッシュします。
コードは、UIStoryboardPopoverSegue を介していない場合に使用しても問題ありません。
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
{
UIImage *image=[info objectForKey:UIImagePickerControllerOriginalImage];
UIImageWriteToSavedPhotosAlbum (image, nil, nil , nil);
[self dismissViewControllerAnimated:YES completion:nil];
}
-(IBAction)takephoto:(id)sender
{
if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) {
self.imagePicker.delegate=self;
self.imagePicker.sourceType=UIImagePickerControllerSourceTypeCamera;
[self presentViewController:imagePicker animated:YES completion:nil];
}
}
- (void)viewDidLoad
{
[super viewDidLoad];
if (!self.imagePicker)
{
self.imagePicker = [[UIImagePickerController alloc] init];
}
}
NSZobmbie を有効にして、追跡に役立つログを表示できるようにしました。
* -[UIImagePickerController isKindOfClass:]: 割り当て解除されたインスタンス 0x1eb3b700 に送信されたメッセージ