NS_AVAILABLE_IOS(5_0)
这个方法可以在iOS5.0及以后的版本中使用,如果在比5.0更老的版本中调用这个方法,就会引起崩溃。
NS_DEPRECATED_IOS(2_0, 6_0)
这个宏中有两个版本号。前面一个表明了这个方法被引入时的iOS版本,后面一个表明它被废弃时的iOS版本。被废弃并不是指这个方法就不存在了,只是意味着我们应当开始考虑将相关代码迁移到新的API上去了。
NS_AVAILABLE(10_8, 6_0)
这个宏告诉我们这方法分别随Mac OS 10.8和iOS 6.0被引入。
NS_DEPRECATED(10_0, 10_6, 2_0, 4_0)
这个方法随Mac OS 10.0和iOS 2.0被引入,在Mac OS 10.6和iOS 4.0后被废弃。
NS_CLASS_AVAILABLE(10_11, 9_0)
这个类分别随Mac OS 10.11和iOS9.0被引入。第一个代表macOS,第二个代表IOS,如果出现NA,则表明在某一个系统中不可用
NS_ENUM_AVAILABLE(10_11, 9_0)
这个枚举分别随Mac OS 10.11和iOS9.0被引入。
代码中用到:
if __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000
//设置便利属性,为了提升速度,只要姓名以及电话属性
self.contactManager.descriptors = [NSString RITLContactNamePhoneKeys];endif
来控制编译时的最小版本为ios9以上,在使用的时候,我们可以直接利用宏 __IPHONE_9_0来控制编译的最小版本;
__IPHONE_OS_VERSION_MIN_REQUIRED:表示编译时的系统版本最低要求,与之对应的为:
__IPHONE_OS_VERSION_MAX_ALLOWED:表示编译时最大允许的系统版本号。
举例:就上面的一个宏判断语句,如果我开发的时候用的是ios10的系统,那么程序进入到if中,否则走到else中进行编译。