- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在开发一个应用程序,我想为 iPhone 3.0、iPhone 4.0 部署它并且可以在 iPad 上以模拟模式运行。
我正在使用 XCode 3.2.3 进行开发,并且有视频要播放。我想将 MPMoviePlayerViewController
用于 >= 3.2,将 MPMoviePlayerController
用于 < 3.2。
如果我用
Class mplayerControllerClass = NSClassFromString(@"MPMoviePlayerViewController");
if(mplayerControllerClass != nil)
{
MPMoviePlayerViewController* moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:movieUrl];
...
}
装有 OS 3.0 的 iPhone 能否处理它不知道的类?
将代码放在 __IPHONE_OS_VERSION_MIN_REQUIRED > 30200
ifelse block 中是否好?像这样:
Class mplayerControllerClass = NSClassFromString(@"MPMoviePlayerViewController");
if(mplayerControllerClass != nil) {
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= 30200
MPMoviePlayerViewController* moviePlayerViewController = [[MPMoviePlayerViewController alloc] initWithContentURL:movieUrl];
...
}
但是 __IPHONE_OS_VERSION_MIN_REQUIRED
到底做了什么?在我看来,它只是重复了我为项目设置的设置:min=3.0
最佳答案
在您的第一个片段中,您正在创建一个基于 NSString
的类。这是可能的,因为你弱链接你的框架,这样旧版本的操作系统不会在这种情况下崩溃。这是在运行时完成的,并将按您预期的方式工作。
另一方面,第二个片段使用预编译器条件。这不会有任何影响,因为为了让您使用 MPMoviePlayerViewController
,您将使用 4.0 的 Base SDK,因此 #if
将始终为真。
底线:弱链接是您想要的,继续您的第一个片段,并确保框架是弱链接。
关于ios - __IPHONE_OS_VERSION_MIN_REQUIRED 请解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3346820/
我正在开发一个应用程序,我想为 iPhone 3.0、iPhone 4.0 部署它并且可以在 iPad 上以模拟模式运行。 我正在使用 XCode 3.2.3 进行开发,并且有视频要播放。我想将 MP
为什么 __IPHONE_OS_VERSION_MIN_REQUIRED 返回基础 SDK 而不是部署目标? 我想使用只能在 iOS 4.3 及更高版本上运行但仍支持 4.0 及更高版本的类。为实现这
在AFNetworking 2.0中,NSHTTPSessionManager.h有如下代码: #if __IPHONE_OS_VERSION_MIN_REQUIRED #import #else
我四处搜索,包括 iOS SDK 兼容性指南,但找不到对此的解释。 我的理解是: 部署目标是最早的操作系统应用程序可以运行的版本 基础 SDK 是它将成为的 SDK使用及其功能编译如果运行时设备可以使
This question解决如何有条件地包含基于 iOS 版本的代码。但它是如何工作的? 假设我在 Xcode 4.5.2 中将 iOS Deployment Target 设置为 3.2。在我的代
我是一名优秀的程序员,十分优秀!