为什么Xcode编译器没有警告我部署目标的无效方法?

我有一个Xcode(4.3.2)项目,带有最新的SDK,我希望iOS 4.0用户能够运行。 所以在项目设置中,我已将Deployment Target值设置为iOS 4.0。 目标设置中也是如此。

但是,我刚刚意识到我的代码使用的是iOS 5+ API调用。 这个:

[self.tabController.tabBar setBackgroundImage:tabBackground]; //Invalid in iOS 4.x ??? 

编译器没有给我任何警告。 不应该吗? 在iOS 4.0设备上执行时会怎么做? 可悲的是,我目前还没有人进行测试。 这让我非常担心有其他地方发生同样的事情,我的程序现在无可救药地与iOS 5绑定。

除非您明确将项目的“基本sdk”设置设置为较低的iOS版本,否则编译器不会警告您这些事情。

不幸的是,最新的Xcode版本似乎没有包含5.1版之前的任何iOS SDK,所以你不能在那里选择4.0。 我建议保留第二次安装iOS 4.0 SDK附带的Xcode 3.x,并使用它来确保您没有使用较新SDK版本的方法。 最后,如果您对iOS开发非常认真并且支持4.0是必须的(为什么?),您应该在尚未升级到iOS 5.0的设备上进行测试(例如,旧版iPod touch关闭eBay ..)。