这两个宏有什么区别?

时间:2010-07-16 22:44:54

标签: iphone macros

之间有什么区别
  

__ IPHONE_OS_VERSION_MAX_ALLOWED

  

__ IPHONE_OS_VERSION_MIN_REQUIRED

我应该使用哪个来检测旧的/新的SDK,例如

#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2

1 个答案:

答案 0 :(得分:14)

__IPHONE_OS_VERSION_MIN_REQUIRED设置为部署目标,表示用户必须最低限度运行才能安装应用的版本。 __IPHONE_OS_VERSION_MAX_ALLOWED设置为您正在编译的SDK版本,但这并不意味着您的应用程序不会在较新版本上运行,但您可以使用它来检查某些操作系统功能是否可用。

例如,从iOS 3.2开始,我们有UIBezierPath类。如果你正在编译SDK 3.1(大概是在iPhone模拟器中测试它),这个新类是不可用的,所以编译器会给你一个警告,表明该类不存在。很公平,但我们不希望每次针对旧版SDK构建它时都会评论该特定代码,仅用于模拟器测试。我们只想隐藏这些代码块,这些宏可以实现。

请阅读this article on Cocoa with Love了解更多说明,提示和技巧。