0

WebView の使用時に発生したエラーをログに記録したいと考えています。例えば:

- (void)webView:(UIWebView *)aWebView didFailLoadWithError:(NSError *)error{
    NSString * domain;
    domain  = [error domain];
    NSLog(@"%@",error);
    if ( domain == NSURLErrorDomain ) {NSLog(@"log me");}
}

これは Xcode 6.1 および iOS8.1 シミュレーターでは機能しないことがわかりました。以前の iOS バージョン (Xcode 6.1 および iOS7-simulator でテスト済み) で動作していました。 私は何が欠けていますか?

コンソール出力は次のとおりです。

2014-11-06 03:42:15.295 MyApp debug[21897:3606481] エラー Domain=NSURLErrorDomain Code=-1012 「操作を完了できませんでした。(NSURLErrorDomain エラー -1012)」 UserInfo=0x7a7531c0 {NSErrorFailingURLKey= https: //www.google.fr/ }

iOS8 シミュレーターを使用する場合のデバッグ:

(lldb) p NSURLErrorDomain (void *)
$0 = 0x0064dacc
(lldb) po ドメイン
NSURLErrorDomain

(lldb) p ドメイン (NSString *) $2 = 0x0064dacc @"NSURLErrorDomain"

4

2 に答える 2

3

アーロンの答えを拡張するだけです。あなたがしていたことは常に間違っていましたが、ココアが文字列を保存する方法に関する事故のためにうまくいった可能性があります。domain == NSURLErrorDomainこれらが事実上同一のオブジェクトであるかどうかをテストします。まあ、いくつかの条件下ではそうかもしれません。Cocoa は、たとえばリテラルの 2 つの異なるインスタンス@"howdy"を 1 つの同じオブジェクトへの参照として扱うことによって、効率的に動作することがあります。しかし、明らかに、その行動を当てにすることは意味がありません。それは単なる実装の詳細です。

于 2014-11-06T03:10:39.383 に答える