gpt4 book ai didi

iphone - __IPHONE_OS_VERSION_MIN_REQUIRED 不返回部署目标?

转载 作者:塔克拉玛干 更新时间:2023-11-01 19:12:15 28 4
gpt4 key购买 nike

为什么 __IPHONE_OS_VERSION_MIN_REQUIRED 返回基础 SDK 而不是部署目标?

我想使用只能在 iOS 4.3 及更高版本上运行但仍支持 4.0 及更高版本的类。为实现这一点,我断言如果我尝试在 iOS 版本低于 4.3 的设备上使用此类。为了避免断言,我通过检查 4.3 方法的可用性来避免代码中的类。部署目标当前设置为 4.0。

但是,因为断言只会在我在旧设备上运行应用程序时发生,所以我还想在部署目标低于 4.3 时添加警告。我正在尝试使用 __IPHONE_OS_VERSION_MIN_REQUIRED。但是,这不知何故一直返回 50000(基本 SDK)而不是低于 43000 的内容,我不明白为什么。

代码:

NSLog(@"Deployment target: %i", __IPHONE_OS_VERSION_MIN_REQUIRED); // Returns 50000 instead of 40000.
#if __IPHONE_OS_VERSION_MIN_REQUIRED < 43000
// Never gets here
NSLog(@"%@", @"WARNING! NWMethodWrapper does not work on iOS versions below 4.3. If you insist on supporting older iOS versions, make sure you do not call NWMethodWrapper methods unless dlsym(RTLD_DEFAULT,\"imp_implementationWithBlock\") evaluates to true.");
#endif
NSAssert(dlsym(RTLD_DEFAULT,"imp_implementationWithBlock"), @"NWMethodWrapper uses methods that are only available from iOS 4.3 and later."); // Asserts, as appropriate (running on iOS 4.2.1).

编辑:我的部署目标已经设置为 4.0,这就是我问这个问题的原因。

最佳答案

如果您没有自己定义 __IPHONE_OS_VERSION_MIN_REQUIRED__IPHONE_OS_VERSION_MIN_REQUIRED 最终由编译器设置(通过“AvailabilityInternal.h”中的宏)以匹配您的最低 iphone 操作系统版本设置为,因此您需要确保将部署目标设置为早于 iOS 5.0 的版本。

关于iphone - __IPHONE_OS_VERSION_MIN_REQUIRED 不返回部署目标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10349752/

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