我意识到以前曾发布过类似的问题,但我似乎真的找不到适合我的解决方案。我有一个存储 MPMoviePlayerController 的 ivar 的 MoviePlayer 类,并且在该类中有以下方法:
-(void)playMovie:(NSString *)movieName
{
NSURL *movieURL;
NSBundle *bundle = [NSBundle mainBundle];
if(bundle)
{
NSString *moviePath = [bundle pathForResource:movieName ofType:@"m4v"];
if(moviePath)
{
movieURL = [NSURL fileURLWithPath:moviePath];
}
}
MPMovieController *mp = [[MPMoviePlayerController alloc] initWithContentURL:movieURL];
if(mp)
{
self.moviePlayer = mp;
[mp release];
[self.moviePlayer play];
}
[movieURL release];
}
调用时我会在电影播放正常后播放电影,但是当在不同(或相同)电影文件上再次调用它时,我会收到以下错误堆栈:
_class_isInitialized
_class_lookupMethodAndLoadCache objc_msgSend
-[MoviePlayer setMoviePlayer:]
-[MoviePlayer playMovie:]
我不知道如何解决它!我假设当 self.moviePlayer = mp 被调用时,当前的moviePlayer被释放并添加了新的?该属性设置为(非原子,保留)。有人可以帮忙吗?
谢谢