我有一个视频要播放。在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代码块,但后来我(终于: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
#ifdef
块的问题在于当新操作系统发布时它们会失败。@Jared的方法只要MPMoviePlayerViewController
或其替代品存在,就会继续工作。 - kubi