iOS: приложение получает SIGKILL из-за медленного сетевого подключения?

Когда я был в отеле, их Wi-Fi, по-видимому, был подключен к Интернету через очень-очень медленное интернет-соединение. На самом деле, возможно, это был модем.

В результате запрос HTTP GET моего приложения, по-видимому, заставил iOS отправить моему приложению SIGKILL (как указывает Xcode).

Почему? Как исправить?

Спасибо.


person Community    schedule 23.04.2012    source источник
comment
Вам нужно показать нам код, который создает и обрабатывает HTTP-запрос. Отредактируйте свой вопрос и вставьте его.   -  person rob mayoff    schedule 24.04.2012


Ответы (1)


Вам нужно поместить свой HTTP-запрос в фоновый поток. Если ваш основной поток слишком долго не отвечает, ваше приложение будет закрыто.

Обычно 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);
}
person Jody Hagins    schedule 23.04.2012