NSURLConnection 非同期リクエストが戻ってきたときに、アプリが停止中、停止中、スリープ状態、または終了処理中の場合はどうなりますか?
非同期関数がプログラムデータが有効であると推定する前に、少なくとも「プログラムが終了しています」というフラグを保持する方がよいようです。
ありがとう。
NSURLConnection 非同期リクエストが戻ってきたときに、アプリが停止中、停止中、スリープ状態、または終了処理中の場合はどうなりますか?
非同期関数がプログラムデータが有効であると推定する前に、少なくとも「プログラムが終了しています」というフラグを保持する方がよいようです。
ありがとう。
iOS 4.0 以降では、ユーザーがアプリを閉じると、サスペンド状態になります。別の方法で行うように指示しない限り、デリゲート コールバックは、ユーザーがアプリを再度開くまで起動しません。コールバックにいくつかの NSLog を記述して、自分自身をテストできます。次に、テスト デバイスでアプリを実行し、接続が開始された直後にアプリを閉じてみます。しばらく待ってからアプリを再度開き (Xcode でまだ「実行中」)、デリゲート コールバックが呼び出されるのを確認します。
//somewhere just after you start the async connection
NSLog(@"Connection started...");
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
NSLog(@"Connection failed with error - %@",error);
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSLog(@"D- Connection finished loading");
}
ユーザーがアプリを閉じた後も接続を継続したい場合は、iOS アプリケーション プログラミング ガイドの「バックグラウンドでコードを実行する」をお読みください。