私がホテルにいたとき、彼らのWifiは明らかに非常に遅いインターネット接続を介してインターネットに接続されていました. 実際にはモデムベースであった可能性があります。
その結果、アプリの HTTP GET 要求が原因で、iOS がアプリに SIGKILL を送信したように見えました (Xcode が示すように)。
なんで?直し方?
ありがとう。
私がホテルにいたとき、彼らのWifiは明らかに非常に遅いインターネット接続を介してインターネットに接続されていました. 実際にはモデムベースであった可能性があります。
その結果、アプリの HTTP GET 要求が原因で、iOS がアプリに SIGKILL を送信したように見えました (Xcode が示すように)。
なんで?直し方?
ありがとう。
HTTP リクエストをバックグラウンド スレッドに配置する必要があります。メイン スレッドが長時間応答しない場合、アプリは終了します。
通常、Web サービスの API は非同期フェッチを提供します。あなたはそれを使うべきです。
API がそのようなものを提供しない場合は、別の API を使用してください。それを除けば、自分でバックグラウンドに入れます。何かのようなもの
- (void)issuePotentiallyLongRequest
{
dispatch_queue_t q = dispatch_queue_create("my background q", 0);
dispatch_async(q, ^{
// The call to dispatch_async returns immediately to the calling thread.
// The code in this block right here will run in a different thread.
// Do whatever stuff you need to do that takes a long time...
// Issue your http get request or whatever.
[self.httpClient goFetchStuffFromTheInternet];
// Now, that code has run, and is done. You need to do something with the
// results, probably on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
// Do whatever you want with the result. This block is
// now running in the main thread - you have access to all
// the UI elements...
// Do whatever you want with the results of the fetch.
[self.myView showTheCoolStuffIDownloadedFromTheInternet];
});
});
dispatch_release(q);
}