Что если приложение не работает или не работает до того, как асинхронный запрос NSURLConnection вернется? - PullRequest
0 голосов
/ 02 сентября 2011

Что произойдет, если приложение мертво, умирает, спит или находится в процессе выхода, когда асинхронный запрос NSURLConnection возвращается?

Мне кажется, что лучше как минимум сохранитьфлаг, который говорит, что «программа завершается», прежде чем моя асинхронная функция предполагает, что данные программы действительны.

Спасибо.

1 Ответ

0 голосов
/ 06 сентября 2011

В iOS 4.0 и выше, когда пользователь закрывает приложение, оно переводится в приостановленное состояние. Если вы не укажете это сделать иначе, обратные вызовы делегата не сработают, пока пользователь снова не откроет приложение. Вы можете проверить себя, написав несколько NSLogs в ваших обратных вызовах. Затем запустите приложение на тестовом устройстве и попробуйте закрыть приложение сразу после начала подключения. Подождите некоторое время и снова откройте приложение (все еще «работающее» в 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. .

...