IOS6 Monotouch中不推荐使用的方法

时间:2012-10-08 17:01:34

标签: ios5 xamarin.ios ios6 deprecated obsolete

我们的应用目前正在定位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;
}

或者在代码库中有两个重写的方法?

1 个答案:

答案 0 :(得分:4)

过时的方法有几个原因。您从编译器警告中获得的消息将告诉您为什么方法已过时。 IOW iOS 已弃用方法是过时方法的子集。

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

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

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

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

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

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

在您的示例中,较旧的ShouldAutorotateToInterfaceOrientation适用于iOS5.1和iOS6。所以最简单的解决方案就是继续使用此API,只要您想支持iOS 5.x。

覆盖两者意味着(通常)iOS6将调用较新的一个,而iOS5将调用较旧的一个。这可能会使测试变得困难,并且在构建应用程序时不会删除已废弃的警告。但是,如果你能从更新的iOS API中获得更好的东西,那么(对于某些API)是否有意义。