Ios5 Monotouch中不推荐的IOS6方法

Ios5 Monotouch中不推荐的IOS6方法,ios5,xamarin.ios,ios6,deprecated,obsolete,Ios5,Xamarin.ios,Ios6,Deprecated,Obsolete,我们的应用程序目前的目标是ios5.1。在安装MT 6.0.2之后,不推荐的警告充斥了构建日志。不推荐使用的方法应该保留在源代码中,还是应该被替换 例如,我是否应将以下内容替换为: public override bool ShouldAutorotateToInterfaceOrientation (UIInterfaceOrientation toInterfaceOrientation) { switch(toInterfaceOrientation) { case

我们的应用程序目前的目标是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;
    }
}


或者这两个重写的方法是否都在代码库中?

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

当一个新的iOS版本发布时,苹果经常不推荐使用几个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)是有意义的。

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

当一个新的iOS版本发布时,苹果经常不推荐使用几个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)是有意义的。

是有意义的,谢谢。我原以为警告只与目标ios版本相关,但我不得不接受。警告来自C#编译器(
smcs
),它不知道您的目标ios版本。在查看代码时,您可以使用
#pragma warning[disable | restore]…
,以确保在将来的版本中只显示重要的警告(例如,如果您支持4.3)。这很有意义,谢谢。我原以为警告只与目标ios版本相关,但我不得不接受。警告来自C#编译器(
smcs
),它不知道您的目标ios版本。您可以在查看代码时使用
#pragma warning[禁用|还原]…
,以确保在将来的版本中只显示重要的警告(例如,如果您支持4.3)。
public override UIInterfaceOrientationMask GetSupportedInterfaceOrientations ()
{
    return UIInterfaceOrientationMask.Landscape;
}