iphone - 如何拆分 iOS 3.0 和 iOS 3.2 的代码,以便我可以使用 MPMoviePlayerViewController(如果 OS 3.2++)

标签 iphone mpmovieplayercontroller

我有一个正在播放的视频。 要在 iOS 3.2 中使用全屏,我使用 MPMoviePlayerViewController (似乎只适用于该类)。但是如果我想为 iOS 3.0 构建,我显然会遇到几个错误,因为这个类在 iOS 3.0 中是未知的。我也知道如何在 iOS 3.0 中使用 MPMoviePlayerController 获得我想要的东西,但我只能有一个,要么是 iOS 3.0 的代码,要么是 iOS 3.2 的代码。

如何应对? - 找到解决方案(请参阅捆绑编辑的底部)

我想我必须使用多个目标,您对如何做到这一点有什么建议吗(当我尝试多个目标时,我总是遇到错误并放弃:))?

<小时/>

捆绑编辑(合并多个编辑)

首先我认为这会起作用。

#ifdef __IPHONE_3_0
// OS 3.0 specific
#endif

但事实并非如此,因为在 iOS 的 Availability.h 文件中,您定义了从 2.0 到当前操作系统的所有操作系统。因此,如果您针对 iOS 3.2 进行编译,#ifdef __IPHONE_3_0 也将返回 true。

然后我认为这会起作用

#if __IPHONE_OS_VERSION_MIN_REQUIRED < __IPHONE_3_2
  // Code for older iOS
#else
  // Code for iOS 3.2 up
#end

但事实并非如此。因为在 iOS 3 中,例如 __IPHONE_3_2 是未定义的。

所以我想我必须创建一些更智能的 if/elseif/else block ,但后来我(最后:D)阅读了苹果 AvailabilityInternal.h 文件定义中 __IPHONE_X_X 上面的注释:

它说你可以使用 __IPHONE_OS_VERSION_MIN_REQUIRED 来解决这类问题,但你不应该使用 __IPHONE_X_X 常量,因为我刚刚发生的事情......它们可能根本没有被定义,因此评估为 0。所以他们建议改用这些值。所以我现在有一个像这样的工作选择器......

我找到的解决方案

(现在这确实 100% 有效)

#if __IPHONE_OS_VERSION_MIN_REQUIRED < 30200
  // code for iOS below 3.2
#else
  // code for iOS 3.2 ++
#endif

最佳答案

我不确定这是否是您想要做的,但根据 Apple 在 iPad 编程指南中对通用应用程序的建议,如果您想为具有不一致 API 的多个操作系统版本进行构建,您应该使用 NSClassFromString,然后从那里开始。这样,您只需要有一个目标(您支持的最低操作系统),并且在您的代码中包含诸如

Class mplayerControllerClass = NSClassFromString(@"MPMoviePlayerViewController");
if(mplayerControllerClass != nil) {
   //Code for 3.2, e.g. [mplayerControllerClass alloc]
} else {
   //Code for pre-3.2 OSes
}

关于iphone - 如何拆分 iOS 3.0 和 iOS 3.2 的代码,以便我可以使用 MPMoviePlayerViewController(如果 OS 3.2++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3019234/

相关文章:

iphone-sdk-3.0 - 使用Webview在iPhone中查看.doc、.docx、.rtf、.ppt文件

iphone - 使用 MPMoviePlayerController 播放 iTunes 预览视频

iphone - MPMoviePlayerController切换电影导致白闪

iphone - MPMoviePlayerViewController 状态栏问题 iOS 8 特定

objective-c - MPMoviePlayerController 错误或功能 : Setting initialPlaybackTime to t seconds hides the time-slider upto t

ios - 哪些 Apple iOS Developer 用户类型可以创建新的配置文件?

iphone - 如何在函数 lua 中设置全局变量

iphone - SDWebimage 占位符中的事件指示器

ios - 在 iOS sdk MPMoviePlayerController 中播放视频的问题

iPhone + 应用内购买 + 更改提醒消息