代码之家  ›  专栏  ›  技术社区  ›  David Liu

RespondsToSelector返回假阴性?

  •  2
  • David Liu  · 技术社区  · 14 年前

    我正在使用 -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 回复  |  直到 14 年前
        1
  •  1
  •   Evan Mulawski    14 年前

    根据iOS类引用, currentPlaybackTime MPMusicPlayerController ,不是 MPMoviePlayerController .

    音乐播放器: 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

    它可能是 MPMoviePlayerControl播放器 没有访问器的。

    编辑 (见评论)

    确定操作系统版本:

    float iPhoneOSVersion = [[[UIDevice currentDevice] systemVersion] floatValue];
    
    if ( iPhoneOSVersion < 3.2 )
    {
    
    }
    else
    {
    
    }