我尝试将我的应用程序升级到iOS 6时发生了一次奇怪的崩溃。注意:这次崩溃只发生在iPhone上,iPad还可以。
<Error>: CGContextSaveGState: invalid context 0x933f7d0
<Error>: CGContextClipToRect: invalid context 0x933f7d0
<Error>: CGContextTranslateCTM: invalid context 0x933f7d0
<Error>: CGContextDrawShading: invalid context 0x933f7d0
<Error>: CGContextRestoreGState: invalid context 0x933f7d0
<Error>: CGBitmapContextCreateImage: invalid context 0x933f7d0
-[Not A Type release]: message sent to deallocated instance 0x933f7d0
初始化MPMoviePlayerViewController时会发生这种情况:
self.moviePlayerController = [[[MPMoviePlayerViewController alloc] initWithContentURL:_videoUrl] autorelease];
其中moviePlayerController是合成和保留的属性。
以下是完整设置:
-(void)setupMediaPlayer {
//NSLog(@"VideoViewController:setupMediaPlayer");
CGRect viewFrame = self.view.frame;
if (self.moviePlayerController == nil) {
self.moviePlayerController = [[[MPMoviePlayerViewController alloc] initWithContentURL:_videoUrl] autorelease];
}
else {
[self.moviePlayerController.moviePlayer setContentURL:_videoUrl];
}
[[self.moviePlayerController view] setFrame:viewFrame];
[self.navigationController.view addSubview:[self.moviePlayerController view]];
}
我已经检查了_videoURL,并且每次都会提供一个好的网址。
我尝试将其更改为MPMoviePlayerController,但是除了generalCallback之外,我的所有通知都没有被触发。像这样设置(但在非ViewController选项中删除.moviePlayer):
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackDidFinishNotification object:self.moviePlayerController.moviePlayer];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerLoadStateDidChangeNotification object:self.moviePlayerController.moviePlayer];
[[NSNotificationCenter defaultCenter] removeObserver:self name:MPMoviePlayerPlaybackStateDidChangeNotification object:self.moviePlayerController.moviePlayer];
我很难过,因为这在iOS 5中完美运行。
注意:我在这个项目中使用Three20和TTNavigator。 TTNavigator似乎不支持新的supportedOrientations设置,所以在iPad上我必须从头开始构建我的tabbar,这样我就不会得到以下错误,所以它会在Landscape中启动:
应用程序在应用程序启动结束时应该有一个根视图控制器
我仍然在iPhone上收到此错误,但我不知道它是否与iPad上没有发生的视频播放器崩溃有关。
有什么想法吗?
由于