【发布时间】:2012-06-03 04:09:40
【问题描述】:
当我调用的方法在支持的最小目标的 SDK 中不可用时,有没有办法让 Xcode 告诉我?
例如方法[NSURLConnection sendAsynchronousRequest:queue:completionHandler:]。此方法适用于 iOS5 及更高版本。但我的应用程序的最低目标是 iOS4。
如果我使用该方法 (sendAsync),我希望 Xcode 告诉我该方法不适用于我尝试支持的最小目标。
我尝试将 __IPHONE_OS_VERSION_MAX_ALLOWED=40000 放入预处理器设置中,但这只会触发一堆无用的 Apple SDK 错误。 (可能是因为我激活的SDK是iOS5.1)
是获取旧 SDK 并在 Xcode 中安装它们的唯一解决方案吗?
有没有更简单的解决方案?
【问题讨论】:
-
我不确定我是否理解这个问题。即使您以旧版本为目标,您也始终使用最新的 SDK。事实上,如果您不使用最新的 SDK,Apple 不会在 App Store 中接受您的应用程序。但只要您只使用可用于目标版本的 API 子集,您就是黄金。
-
对,但是如果有人在 iOS4 上安装应用程序,我需要确保我不使用任何 iOS5+ API。所以我正在寻找一种方法让 xcode 警告我,而不必查看每一行代码并仔细检查它是否是 iOS 4 安全的。
-
也许this Apple techdoc也许有帮助?
-
在我看来没有办法做到这一点。在您的部署目标之后在 SDK 中引入的任何 API 都是弱链接。但是因为基础 SDK 确实有问题的方法,你不会从 Xcode 收到任何抱怨,因为它只是方法的弱链接。这正是我的问题,我想让 Xcode “帮助”我,并就弱链接的方法给我警告,所以我可以确保在它们周围放置必要的 respondsToSelector: 检查,而我必须手动查看代码库并手动找到它们。
-
不完全是 XCode 中的解决方案,但可能对你们中的某些人有用:使用 AppCode。它会警告您不属于您的应用支持的版本的方法(例如,在 iOS 8 + 9 应用中使用 iOS 9 方法)。