我假定initWithContentURL:
方法不是異步的。我添加了以下方法在後臺執行加載,然後將臨時播放器分配給我的變量。異步MPMoviePlayerController負載沒有持續時間值
-(void)createPlayer {
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
MPMoviePlayerController *temp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"URLString"]];
[self performSelectorOnMainThread:@selector(passPlayer:) withObject:temp waitUntilDone:YES];
[temp release];
[pool release];
}
-(void)passPlayer:(MPMoviePlayerController*)temp {
player = [temp retain];
player.movieSourceType = MPMovieSourceTypeStreaming;
//player.view.hidden = YES;
//[self.view addSubview:player.view];
[player prepareToPlay];
}
問題是,當我打印出來的球員的時間,我得到這樣的:
double duration = player.duration;
NSLog(@"duration: %f, duration);
console output: duration: nan
我已經加入了MPMoviePlayerControllerNotifications
當有可用的持續時間值被通知,但即使是這樣的價值仍然是'南'。如果我在主線程上執行加載,則持續時間有一個值,但我不想使用主線程,所以我的UI不會鎖定。
任何想法?
您的初始假設是錯誤的 - initWithContentURL是異步的。 – Till
@Till任何文檔指向我? – jmosesman
不,不幸的是,我所得到的是大量使用它的經驗。即使遠程服務器不可訪問,它也不會引入可識別的延遲。 – Till