これは私が抱えている非常に興味深い問題です。私のアプリにはpresentViewController:animated:completion:
、およびに問題がありdismissViewControllerAnimated:completion:
ました。何が起こったのかというと、presentViewController が呼び出され、サーバー情報に基づいて、View Controller が破棄される可能性があります。「完全に表示される前に閉じることはできません」というエラーが表示されます (アニメーションは YES に設定されています)。
現在を処理するためのキューを実装し、呼び出しを却下しました。これは完璧に機能し、このソリューションに本当に満足しています。次に、別の問題に気付きました。誤って Apple のメソッドを直接呼び出したらどうなるでしょうか (私には、キューイングを処理する というメソッドがありmyPresentViewController:animated:completion:
ますmyDismissViewControllerAnimated:completion:
)。
Apple のメソッドを直接呼び出した場合に警告メソッドを設定する方法はありますか? カテゴリを作成してみました (拡張機能も試しました)、Apple の現在のメソッドと破棄するメソッドを定義し、非推奨のメッセージをそれらに追加しました。これらの方法はどちらも機能しませんでした。私はメソッドを入れ替えることを考えましたが、それは機能しません。なぜなら、入れ替えられたメソッドがそれをキューに追加した場合、アップルの実装を呼び出すタイミングをどのように知るのでしょうか? Apple のメソッドを呼び出す必要がある 1 つの場所に警告が表示されることはわかっていますが、#pragma を使用して、必要な 2 行の警告を抑制することができます。