0

else次のコードは機能しますが、ブロック内で非推奨のメソッド呼び出しが警告につながるため、それでもイライラします。

if ([self.navigationController respondsToSelector:@selector(dismissViewControllerAnimated:completion:)])
{
    [self.navigationController dismissViewControllerAnimated:YES completion:nil];
}
else
{
    //Here,the warning goes!
    //dismissModalViewControllerAnimated is deprecated
    [self.navigationController dismissModalViewControllerAnimated:YES];
}

無視された警告を非表示にするにはどうすればよいですか、または問題を解決する他の方法はありますか?

4

2 に答える 2

4

問題のコード行周辺の非推奨警告を一時的に無効にすることができます。

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

[self.navigationController dismissModalViewControllerAnimated:YES];

#pragma clang diagnostic pop
于 2013-01-19T09:27:16.643 に答える
0

dismissViewControllerAnimatedとdismissModalViewControllerAnimatedの両方を保持する理由はわかりません。プロジェクトのデプロイターゲットが6.0であり、iOS 6 SDKでdismissModalViewControllerAnimatedが非推奨になっているため、dismissModalViewControllerAnimatedの警告が表示されます。

  1. アプリで6.0未満のiOSをサポートする場合は、デプロイターゲットを6.0未満(5.0など)に変更し、モーダルを閉じるためにdismissModalViewControllerAnimatedのみを使用します。
  2. アプリでiOS6.0以降をサポートする場合は、デプロイターゲットを6.0のままにし、表示されたコントローラーを閉じるためにdismissViewControllerAnimatedのみを使用します。
于 2013-01-19T10:17:38.163 に答える