4

我希望我的 iphone 应用程序也可以在旧的 iOS 版本上运行,所以我使用的是 presentModalViewController,但同时我担心它可能带来的灾难,因为我使用了一种已弃用的方法。

谢谢。

4

2 回答 2

7

H2CO3 是完全正确的:不使用已弃用功能的原因是,Apple 已经向我们发出了公平的警告,即被弃用的 iOS 未来版本可能不支持它,因此您的应用程序可能无法在未来版本的 iOS 上运行。新的presentViewController为您提供了已弃用方法的所有功能,并为您提供了completion块选项。也许您不需要它(在这种情况下您只需通过nil),但这不是使用已弃用功能的理由。

如果您计划在新方法所需的 iOS 版本(在本例中为 iOS 5)之前支持 iOS,则应仅使用已弃用的方法,如果您这样做,则应有条件地仅对那些较旧的版本使用已弃用的方法版本(即正如史蒂夫建议的那样,检查您的对象respondsToSelector是否适用于新方法,如果是,则使用该方法,如果不使用旧版本)。

于 2012-12-11T20:26:16.177 回答
4

如果您想使用不推荐使用的方法来支持旧版本,只需检查对象是否响应新方法。如果没有,您使用的是旧版本,需要使用旧方法。

if ([myVC respondsToSelector:@selector(presentViewController:animated:completion:)]) {
   //use the new version
} else {
   //use the old version.
}
于 2012-12-11T20:41:46.107 回答