要するに、[NSURL URLWithString:]
例外を発生させているようです。ドキュメントによると、「文字列の形式が正しくない場合、nil が返されます。」どのような状況でも例外が発生するという言及はありません。これに加えてnil
、文字列を URL に変換する前に、URL のエンコードとチェックの両方を行っています。
URL を変換する前に、それがどの例外であるか、または他にどのようなエラー チェックを行う必要があるかについて、誰かアドバイスをいただけますか?
詳細に興味がある場合は、呼び出しコードは次のようになります。
NSString* tmpText = [newUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
if (tmpText == nil) {
// error handling
}
else {
NSURL* tmpURL = [NSURL URLWithString:tmpText];
これは、iTunes Connect からダウンロードしたクラッシュ レポートの一部です。
8 libobjc.A.dylib 0x300c1f84 objc_exception_throw
9 CoreFoundation 0x3029a598 +[NSException raise:format:arguments:]
10 CoreFoundation 0x3029a538 +[NSException raise:format:]
11 Foundation 0x30696dde -[NSURL initWithString:relativeToURL:]
12 Foundation 0x30696cd8 +[NSURL URLWithString:relativeToURL:]
13 Foundation 0x30696cae +[NSURL URLWithString:]
14 Yummy 0x000146ca -[DeliciousPostCell setUrl:] + 46
URL の形式が「不適切」だったようですが、実際にnil
は例外ではありません。
自分で例外が発生するのを見たことがないので、XCode を使用してコードをトラップし、何が起こっているのかを確認することはできません。また、問題が発生したユーザーから直接連絡がなかったので、詳細を尋ねることはできません。どんな提案でも大歓迎です。
更新 (2009 年 14 月 7 日) : このようなハックのように見えますが、疑わしい行の周りに例外ブロックを追加しました。また、レーダー バグ レポート (#7031551) を提出し、コードがドキュメントと一致する必要があることを示唆しました。