使用 __IPHONE_OS_VERSION_MIN_REQUIRED 而不进行比较

Use of __IPHONE_OS_VERSION_MIN_REQUIRED without comparison

在 AFNetworking 2.0 中,NSHTTPSessionManager.h 具有以下代码:

#if __IPHONE_OS_VERSION_MIN_REQUIRED
#import <MobileCoreServices/MobileCoreServices.h>
#else
#import <CoreServices/CoreServices.h>
#endif
使用

__IPHONE_OS_VERSION_MIN_REQUIRED 时未指定要比较的版本。为什么?是因为这个宏是在Core Services framework改成MobileCoreServices.h的时候定义的吗?

这是检查设备是 iOS 设备还是 OS X 设备。 MobileCoreServices 用于 iOS 而 CoreServices 用于 OS X.

__IPHONE_OS_VERSION_MIN_REQUIRED 仅在 iOS 上定义,这就是它起作用的原因。另一个检查是 MAC_OS_X_VERSION_MIN_REQUIRED,它仅在 OS X 上定义,因此可以以相反的方式使用。

这是一张空头支票,不应该这样做。应该为每个平台创建单独的框架。我猜他们这样做是因为它可能会节省一些硬盘 space,因为框架的其余部分可能几乎相同。