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 (非推奨のものではない) のみを使用する必要があります。

  • 以前の 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 に答える