2012-04-04 14 views
2

NSURLConnectionを作成していますが、無効なURL(http://thiswontwork.com/asdf)を使用しています。私はメインスレッドで呼び出すと、私はデリゲートのすべてのデリゲートメソッドを実装しました。NSURLConnectionが無効なURLでハングアップする

接続がハングアップし、デリゲートメソッドが呼び出されない場合は、connection:didFailWithError:が呼び出されると予想されます。呼び出される唯一のデリゲートメソッドは

- (NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse 

誰もがこのようなことを知っていますか?

デバイスとシミュレータ(xCode4のiOS5)のデバッガで発生します。

デモを行うには、単一のボタンを使用した簡単なビューコントローラを作成してください。必要に応じてコードを投稿できます。

要求のタイムアウト間隔が30秒に設定されています。

+1

どのように接続を作成していますか、問題が他の場所にあるようですが、そのコードも追加できますか? – rishi

+1

呼び出されないデリゲートメソッドのスペルが正しいことを確認してください。 – Costique

+0

は後でコードを投稿しますが、上記のハイライトされたデリゲートメソッドを削除すると、他のデリゲートメソッドが成功レスポンスコードで呼び出されます。 NSURLConnectionに奇妙なハングアップを持つ他の(自明ではない)コードがあります。それは私が別のライブラリを使っていたその後のプロジェクトの古いプロジェクトです。 – gamozzii

答えて

1

nilを返すと、接続は終了します。私は今すぐドキュメントの前にいませんが、私はそれが関数に渡さNSURLRequestを返すのが標準的な習慣だと考えています。ような何か:

-(NSURLRequest *)connection:(NSURLConnection *)connection willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)response{ 
    return request; 
} 

編集

ドキュメントを見た後、私はあなたが何を意味するか参照してください。あなたがnilを返すとどうなるかについては、ドキュメントは非常に誤解を招きます。それは、あなたが無関係に戻っても接続は続行されると言いますが、これはresponseがnilでない場合のみであると私は信じています。私が書いた小規模のダウンロードマネージャプロジェクトでは何も返さなかったとテストしましたが、接続が完全に停止しているようでした。

これは、バグであるか、ドキュメントの貧弱なインスタンスのようです。

+0

docは実際のリダイレクトでなくてもメソッドが呼び出せるということを意味する(そして私の経験はそうである)ことを除いて、レスポンスをチェックする必要があります。なし。 – gamozzii

+0

@gamozzii私はあなたが何を意味するかを見ます。応答で編集されました。 – NJones

関連する問題