这是我制作的节目。 但我运行不好。当我在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];
答案 0 :(得分:0)
首先:请将来使用代码格式化程序。这看起来很痛苦。
第二:你是双重释放UIImagePicketController(videoRecorder)自动释放将在当前runloop退出后释放它,但是你也明确地在你的方法调用结束时释放它,所以当iOS清理自动 - 释放池,它将获得双重释放和崩溃。
由于格式化,我无法阅读其余内容,但这似乎是您最有可能打赌导致崩溃的原因。
答案 1 :(得分:0)
您应该编辑帖子并使代码可读。
问题是您在第一行自动释放videoRecorder,因此您不必调用-release。 videoRecorder在第一行中保留计数为零,在将其分配给self.recorder_时保留计数为1。当您调用该版本时,保留计数将变为零,并且自动释放池使对象消失,然后记录器可以呈现为模态视图控制器。删除那个 - 释放电话,你应该没事。此外,您的代码将委托和sourceType设置两次。