1

UIAlert でリクエストのタイムアウトを処理することは可能ですか? タイムアウトが発生したことをユーザーに通知したいと思います。0.0発生するかどうかをテストするためだけに設定しました。ログが印刷されないので、修正を処理しているとは思えません

request.timeoutInterval=0.0;

そしてそれを処理するには:

- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
if(error.code == NSURLErrorTimedOut){
    NSLog(@"Time out");
   }
}

私は使用NSURLConnectionDelegateしていますNSURLConnectionDownloadDelegate

ありがとう。

4

1 に答える 1

0

関連するすべてのエラー コードのリストは、こちらで確認できます。-1009 はkCFURLErrorNotConnectedToInternet. タイムアウトを強制するには、URL の実際の送信を抑制するか、ブラック ホールに入る URL を見つける機能が必要です。

Network Link ConditionerAppleには Xcode がバンドルされています (ネットワーク ツールに含まれていると思います)。このツールに関する素晴らしい記事が NSHipster にあります。

タイムアウトを取得する別の方法 (私が信じている) は、リクエストを送信した直後に別のアプリに切り替えて、自分のアプリをバックグラウンドに置くことです。5 分待ってから元に戻し、ログを確認します。できることは、デモ アプリで NSURLConnections を継続的に送信することです。つまり、最初の接続が返されたら、別の接続を送信します。そのため、常に未解決のものが 1 つあります。ここで、アプリを切り替えます - シミュレーターで別のアプリに切り替えます - 待ってから戻ります。この方法で条件をキャッチできるはずtimeoutintervalです。値を変更した場合の影響を確認できます。

iOS ネットワーキングのプライベート Apple フォーラムに、タイムアウトに関する長いスレッドがありました - あなたはそれを見つけることができるかもしれません. 最終的に、システムはかなり長い最小値を強制し (私が思い出したように)、それを長くすることはできますが、短くすることはできません。この隠された振る舞いは、確かに多くの人々を当惑させてきました。質問への回答者はQuinn "The Eskimo"、Apple で最も経験豊富なネットワーキング エンジニアの 1 人でした。

于 2013-11-13T14:32:25.180 に答える