2010-07-16 83 views
10

是什么这2个宏有什么区别?

__IPHONE_OS_VERSION_MAX_ALLOWED

__IPHONE_OS_VERSION_MIN_REQUIRED

我应该用它来检测旧/新的SDK,像

之间的区别
#if __IPHONE_OS_VERSION_MIN_REQUIRED >= __IPHONE_3_2 

回答

14

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

例如,自iOS 3.2以来,我们有UIBezierPath类。如果你正在编译SDK 3.1(假设在iPhone Simulator中测试它),那么这个新类不可用,所以编译器会给你一个警告,说明该类不存在。不够公平,但我们不希望在每次我们针对旧版SDK构建特定代码时对其进行评论,只是针对模拟器测试。我们只是想隐藏这些代码块,这些宏可以让这些代码块成为可能。

请阅读this article on Cocoa with Love作进一步解释,提示和技巧。

+0

但是__IPHONE_OS_VERSION_MAX_ALLOWED(而不是“_REQUIRED”)呢? – cocoapriest 2010-07-17 11:39:10

+0

哎呀,我的意思是MAX_ALLOWED,根本没有定义MAX_REQUIRED。 – Joost 2010-07-17 20:57:04

+0

@Joost我想不出这两个宏的实际用例 – onmyway133 2014-06-03 05:29:55