gpt4 book ai didi

ios - __IPHONE_OS_VERSION_MIN_REQUIRED 请解释

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:52:49 26 4
gpt4 key购买 nike

我正在开发一个应用程序,我想为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com