RespondsToSelector返回假阴性?

时间:2010-11-17 22:11:54

标签: iphone mpmovieplayercontroller

我目前正在使用-respondsToSelector:,如此:

if (![moviePlayer respondsToSelector:@selector(currentPlaybackTime)]) {
    NSLog(@"Cannot get current playbackTime on %@", moviePlayer);
    return;
}

其中moviePlayer是一个实例化的MPMoviePlayerController对象。我做了很多其他类似的选择器检查,所以我知道其他一切工作正常,但由于某种原因,这个respondsToSelector检查返回false,即使我做time = [moviePlayer currentPlaybackTime]之类的事情,它也可以正常工作。这是在4.0+ iOS上,所以它没有理由返回false。

为什么会发生这种情况的原因?

1 个答案:

答案 0 :(得分:1)

根据iOS类引用,currentPlaybackTimeMPMusicPlayerController的属性,而不是MPMoviePlayerController

MPMusicPlayerController: http://developer.apple.com/library/ios/#documentation/MediaPlayer/Reference/MPMusicPlayerController_ClassReference/Reference/Reference.html

的MPMoviePlayerController: http://developer.apple.com/library/ios/#documentation/MediaPlayer/Reference/MPMoviePlayerController_Class/MPMoviePlayerController/MPMoviePlayerController.html

它可能是MPMoviePlayerController的私人财产,没有访问者。

编辑(见评论)

确定操作系统版本:

float iPhoneOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

if ( iPhoneOSVersion < 3.2 )
{

}
else
{

}