2

次のコード行があります。

CGContextSelectFont(context, "Courier", [storedTextSize floatValue], kCGEncodingFontSpecific);
CGContextSetTextDrawingMode(context, kCGTextFill);
CGContextSetTextPosition(context, 0.0f, round([storedTextSize floatValue] / 4.0f));
CGContextShowText(context, [string UTF8String], strlen([string UTF8String]));

iOS と Mac OS の両方で同じ正しい結果が得られます。不可解なのは、一般的な「例外ブレークポイント」を追加すると、「スレッド 1: ブレークポイント 1.2」メッセージが表示されてアプリケーションが最後の行 (Mac OS X の場合のみ) で停止することです。「プログラムの実行を続行」を数回クリックすると、プロセスが正しく終了します。

iOS のアプリは停止しません。例外ブレークポイントを無効にすると、実行されます(一見問題ありません)。

わかりません。ここで何が起こっているのですか?エラーはありますか?

4

1 に答える 1

2

内部エラーがありますが、処理されます。メッセージやエラーが表示されない場合は、実装が回復したと想定してください。また、パラメータとコンテキストを健全性チェックする必要があります。もちろん、例外がプログラムに巻き戻されたり、メッセージやエラーが表示されたりしない限り、心配する必要はありません (すべてが正しく表示されているため)。例外が (この API から) プログラムに入った場合、例外をキャッチしたり回復したりしないでください。何かがスローできること、およびスローするものを指定した場合は、それを処理することを検討できますが、CG インターフェイスの場合はそうではありません。

于 2012-08-30T17:51:04.343 に答える