在我的代码中我使用
[[self presentingViewController] dismissViewControllerAnimated:YES
completion:dismissBlock];
问题是我的部署目标设置为:5.0。
虽然基础 SDK 是 6.1。
我不应该收到 XCode 的警告吗?(因为我认为上面的方法是在 iOS6 中引入的)。
在我的代码中我使用
[[self presentingViewController] dismissViewControllerAnimated:YES
completion:dismissBlock];
问题是我的部署目标设置为:5.0。
虽然基础 SDK 是 6.1。
我不应该收到 XCode 的警告吗?(因为我认为上面的方法是在 iOS6 中引入的)。
不幸的是,Xcode 不会检查您是否使用了部署 SDK 中不可用的符号。
它仅根据基本 SDK 检查您的代码。
但是您可以为此使用一些第三方软件,例如DeployMate。
话虽如此,正如其他人指出的那样,dismissViewControllerAnimated:completion:
自 iOS 5 起就可以使用,因此您的代码是安全的。
但使用 DeployMate 之类的工具检查应用程序中不可用或已弃用的 API 始终是一个好主意。
编辑
这是对您的评论的回答:
如果您的部署目标是 5.0 并且您的基础 SDK 为 6.0,则在 iOS 5 设备上使用 6.0 SDK 中可用的符号将使应用程序崩溃。
但是 Xcode 在编译时不会对此发出警告,因此需要一些第三方软件。
一旦您确定了有问题的符号,使用respondsToSelector:
就是要走的路,因为它比简单的版本检查要好。
这样,您可以拥有将与两个 SDK 版本一起运行的条件代码:
if( [ someObject respondsToSelector: @selector( someIOS6Method ) ] )
{ /* iOS 6 code */ }
else
{ /* iOS 5 code */ }
仅当您检测到 SDK 问题时才执行此操作。不要对所有事情都这样做。
根据 UIVIewController class reference,此方法适用于 iOS 5.0 及更高版本。
Availability
Available in iOS 5.0 and later.
警告你是不行的。SDK 的默认捆绑包中不包含此警告。