iphone录像机

时间:2011-09-01 07:47:30

标签: iphone video

这是我制作的节目。 但我运行不好。当我在iphone上打开这个程序时,它立即关闭。 我将展示我的代码并回答我的问题。

UIImagePickerController * videoRecorder = [[[UIImagePickerController alloc] init] autorelease];
    videoRecorder.delegate = self;
    videoRecorder.sourceType = UIImagePickerControllerSourceTypeCamera;
    NSArray *sourceTypes = [UIImagePickerController availableMediaTypesForSourceType:videoRecorder.sourceType];
    if (![sourceTypes containsObject:(NSString*)kUTTypeMovie] ) {
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil 
                                                        message:@"Device Not Supported for video Recording."     
                                              cancelButtonTitle:@"Yes"
                                              otherButtonTitles:@"No",nil];
        [alert show];
        [alert release];
        return;
    }
    videoRecorder.sourceType = UIImagePickerControllerSourceTypeCamera;
    videoRecorder.mediaTypes = [NSArray arrayWithObject:(NSString*)kUTTypeMovie];           
    videoRecorder.videoQuality = UIImagePickerControllerQualityTypeLow;
    videoRecorder.videoMaximumDuration = 120;
    videoRecorder.delegate = self;
    self.recorder_ = videoRecorder;                 
    [videoRecorder release];
    [self presentModalViewController:self.recorder_ animated:YES]; 

2 个答案:

答案 0 :(得分:0)

首先:请将来使用代码格式化程序。这看起来很痛苦。

第二:你是双重释放UIImagePicketController(videoRecorder)自动释放将在当前runloop退出后释放它,但是你也明确地在你的方法调用结束时释放它,所以当iOS清理自动 - 释放池,它将获得双重释放和崩溃。

由于格式化,我无法阅读其余内容,但这似乎是您最有可能打赌导致崩溃的原因。

答案 1 :(得分:0)

您应该编辑帖子并使代码可读。

问题是您在第一行自动释放videoRecorder,因此您不必调用-release。 videoRecorder在第一行中保留计数为零,在将其分配给self.recorder_时保留计数为1。当您调用该版本时,保留计数将变为零,并且自动释放池使对象消失,然后记录器可以呈现为模态视图控制器。删除那个 - 释放电话,你应该没事。此外,您的代码将委托和sourceType设置两次。