编码时捕获NS_AVAILABLE_IOS

时间:2012-10-02 13:55:38

标签: iphone sdk ios6

我知道如何更改IPHONEOS_DEPLOYMENT_TARGET支持的最低操作系统。我目前正在使用Xcode 4.5开发并使用iOS 6.0 SDK。

我想要做的是在我使用标记的代码时找到一种在编译时抛出警告的方法: NS_AVAILABLE_IOS(6_0)

这样我就可以确保我不会错过任何“是的,但是你在iOS 5上,所以不要使用这个代码”会导致用户设备崩溃。

1 个答案:

答案 0 :(得分:0)

当SDK低于6.0时,

NS_AVAILABLE_IOS(6_0)被定义为__attribute((unavailable)),但当SDK为6.0或更高版本时,

#define NS_AVAILABLE_IOS(6_0) /* noop */被定义为无。

因此,只要您使用SDK 6.0进行编译,您将在概念上IPHONE_OS_VERSION_MAX_ALLOWED,因此您将无法检测到任何内容。

唯一的选择是重新定义NSObjCRuntime.h以欺骗编译器并让它认为它使用较旧的SDK,但我甚至不确定是否有可能在AvailabilityMacros.h之前尽快重新定义它。并且包含{{1}}标题。