Я пытаюсь вызвать UIImagePickerController, чтобы выбрать фильм на iPhone 3GS, и когда фильм выбран, я просто отклоняю его и представляю MyViewController модально с настроенной задержкой 1,0 секунды. То, что я замечаю в 10% случаев, presentModalViewController на MyViewController ничего не делает, тогда как он работает в 90% случаев. Я хочу понять, почему это поведение и каково средство. Вот пример кода:
(void) imagePickerController: (UIImagePickerController *) средство выбора didFinishPickingMediaWithInfo: (NSDictionary *) информация
{
NSURL * videoURL = ноль;
NSString * mediaType = [info objectForKey: UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.movie"])
{
videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
}
picker.delegate = nil;
[[picker parentViewController] dismissModalViewControllerAnimated: YES];
[self executeSelector: @selector (launchMyViewController :) withObject: nil
afterDelay: 1,0];
}
- (void) launchMyViewController: (id) obj
{
MyViewController *myCtrl = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle] controller:self];
[self presentModalViewController:myCtrl animated:YES];
[myCtrl release];
NSLog(NSStringFromClass([self.modalViewController class]));
[path release];
}
Я поместил оператор NSLog для печати имени класса self.modalViewController, и я замечаю, что в 10% случаев, когда myCtrl не запускается модально, self.modalViewController.class является UIImagePickerController. В противном случае self.modalViewController.class является MyViewController. Я хочу знать, почему поведение настолько непредсказуемо, и какой обходной путь или другой способ достичь того же, что я намереваюсь.