1

我们的应用程序现在针对 ios5.1。安装 MT 6.0.2 后,不推荐使用的警告填充了构建日志。不推荐使用的方法应该仍然保留在源中还是应该被替换?

例如,我应该将以下内容替换为:

public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation)
{
    switch(toInterfaceOrientation) {
        case UIInterfaceOrientation.LandscapeLeft:
        case UIInterfaceOrientation.LandscapeRight:
            return true;
        default:
            return false;
    }
}

public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
    return UIInterfaceOrientationMask.Landscape;
}

或者在代码库中有两个被覆盖的方法?

4

1 回答 1

4

过时的方法有几个原因。您从编译器警告中获得的消息将告诉您方法被废弃的原因。IOW iOS不推荐使用的方法是过时方法的子集。

当一个新的 iOS 版本发布时,Apple 经常弃用几个 API。这意味着 API:

  • 已被更好/不同的东西所取代;
  • 可能在某个时候(不是当前的 iOS 版本)从 iOS 中删除(这种清理并不经常发生);

所以这些是警告,而不是错误。您应该审查并决定如何处理它们。例如

  • 如果您正在编写新的代码/应用程序,至少需要 iOS6,那么您应该只使用新的 API(而不是弃用的 API);

  • 如果您正在更新一个要求您与早期 iOS 版本(例如 5.1)兼容的应用程序,那么您可能希望使用较旧的 API,并在有意义的情况下逐步更新它们(例如 iOS6 特定功能、不同代码路径...)。

  • 如果您的应用程序支持的最低 iOS 版本是 4.2,则不应使用 4.0、3.2 中已弃用的 API ...但您也应注意不要使用较新的 API。

在您的示例中,旧版本ShouldAutorotateToInterfaceOrientation适用于 iOS5.1 和 iOS6。所以最简单的解决方案是只要你想支持 iOS 5.x,就一直使用这个 API。

覆盖这两者意味着(通常)iOS6 将调用较新的,而 iOS5 将调用较旧的。这会使测试变得困难,并且在构建应用程序时不会删除过时的警告。但是,当您可以从较新的 iOS API 中获得更好的东西时,这样做是否有意义(对于某些 API)。

于 2012-10-08T17:19:04.537 回答