为什么 __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,这就是我问这个问题的原因。