5

Objective-C コード内から例外が発生することがあります。私の例では、これらの例外は重要ではなく、アプリが動作し続けることを望んでいます。問題は、これらの例外をどのように処理するかです。

たとえば、GeoCoder クラスを使用しているときに、アプリがときどきクラッシュします。ジオコーダーが場所のジオコーディングに失敗したかどうかはあまり気にせず、アプリを存続させたいと考えています。try-catch ブロックにジオコーダー呼び出しを含めても、問題は解決しません。

どんな助けでも大歓迎です!

4

1 に答える 1

6

MonoTouch は、ObjC 例外をマネージ例外にある程度変換しようとします。これは、ObjC 例外用の未処理の例外ハンドラーを追加することによって行われ、そこでマネージ例外がスローされます。これはセカンダリ スレッドでは機能しますが、メイン スレッドでは機能しません。これは、iOS のメイン実行ループに try-catch ハンドラーがあり、例外が到達するとアプリが強制終了されるためです (つまり、例外が処理されるため、決してMonoTouch の未処理の例外ハンドラに到達します)。

最善の方法は、最初から ObjC 例外を回避することです (Apple のドキュメントでは、ObjC 例外は多くの問題があるため、真に例外的な状況でのみ使用する必要があると記載されています。たとえば、メモリ リークは非常に一般的です)。

すべての ObjC 例外を回避することは明らかに不可能であるため、引き続き発生する場合の回避策を見つけようとします。特定のケースでこれを行う最善の方法は、完全なテスト ケースを作成し、http: //bugzilla.xamarin.comでバグ レポートを開き、テスト ケースを添付することです。

于 2012-05-11T10:15:39.997 に答える