如何使用xcode编译器警告来确定最低的IOS部署目标

我正在使用基本SDK设置为iOS 4.2的Xcode 3.2.5构build一个iOS应用程序

我知道我已经使用了一些从4.0和4.1的API,但不知道我是否真的需要4.2。

根据iOS开发指南,“当Xcode检测到您的应用程序正在使用目标操作系统版本中没有的function时,会显示警告信息”。

所以我希望能使用编译器警告来获得我的最低操作系统要求。 但是,即使我把我的iOS部署目标设置为iOS 3.0,我仍然没有得到任何编译器警告。

我一定在做错事,但不知道是什么? 任何人都可以确认,当他们的iOS部署目标小于基础SDK并且代码使用基础SDK函数时,他们会得到编译器警告? 或者,只有链接iOS部署目标版本中不存在的框架,才会显示编译器警告。

它的行为如预期:更改部署目标只会影响您的应用程序将运行的最低操作系统版本,而不是最大值。

如果您使用4.3 SDK并将部署目标设置为4.0,则意味着您的应用将硬连接任何4.0之前的API,并弱化4.0和4.3之间引入的任何API。 您必须在运行时检查是否存在API(例如C函数的空指针)或操作系统版本。

部署目标确实会生成Xcode警告,但会生成不推荐的API:例如,如果您使用4.1及更高版本中弃用的API,并且部署目标为4.1或更高版本,则会收到警告,但如果是4.0或更早版本,则不会。

它看起来像你真正需要在你的情况是相当于MAC_OS_X_VERSION_MAX_ALLOWED (这不是默认的生成设置的一部分,但你可以自定义它,它应该覆盖由SDK设置的值),但对于iOS SDK。 我不确定它是否正式存在:我能够find__IPHONE_OS_VERSION_MAX_ALLOWED但是考虑到它以__开头,我不确定它是否真的被支持。

正确的解决scheme似乎只是针对以前版本的SDK构build(您可以在模拟器中始终这样做),如果使用缺less的API,则会出现Xcode错误。

有关更多信息,请阅读此技术说明: http : //developer.apple.com/library/mac/#documentation/DeveloperTools/Conceptual/cross_development/Configuring/configuring.html

暂时改变你的基地sdk看到他们

编辑:为了检测新版本的iOS中只有新版本的API,我不认为Xcode可以自动为我们做。 我们需要自己把它们放在脑海里。 我build议的阅读来源:

  1. login到你的开发账户和searchAPI差异 。 这些官方的API差异化文件应该是彻底的和有帮助的。
  2. 检查这个伟大的文章如何包装你的代码,以使其在较低版本的iOS兼容:

===

尝试清理您的项目的生成文件夹。 之后,你应该看到你的代码使用的不推荐使用的API的警告。

替代文字

替代文字