Я хочу использовать метод stringWithContentsOfURL, когда сеть плохая? в иос

В этом коде я пытаюсь восстановить соединение, когда сеть плоха, пока не подключится.

   NSString * szURL =[NSString stringWithFormat:@"http://soxxx9.cafe24.com/event.php"];

    NSURL *url = [NSURL URLWithString:[szURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding ]];

   NSString *strData;
   while(TRUE)
  {
    NSError *error = nil;

    strData= [NSString stringWithContentsOfURL:url
                                             encoding:NSUTF8StringEncoding
                                                error:&error];
    if(!error)
    break;

    NSLog(@"error occur");
    [strData release];
    strData=nil;
}

Правильно ли этот код?

Это происходит предупреждение о нехватке памяти?

Если у вас есть лучший способ, научите меня.

2 ответа

Этот код кажется очень энергоемким, когда сеть отсутствует: вы будете пытаться миллион раз загрузить что-то недоступное...

Посмотрите на класс Reachability, предоставленный Apple ( http://developer.apple.com/library/ios/). Вы найдете версии ARCified на gitHub (например, https://github.com/tonymillion/Reachability).

Идея состоит в том, чтобы зарегистрироваться для получения уведомлений о доступности сети.

Итак, в вашем коде:

  1. Проверьте доступность сетевого ресурса перед получением нужной вам строки.
  2. Если это возможно, используйте свой код БЕЗ времени (ИСТИНА)
  3. Проверьте вашу строку на наличие ошибок при получении ее на стороне клиента = в вашем коде

Если сеть недоступна, вам нужно будет сообщить пользователю, что сеть недоступна, и зарегистрироваться для получения уведомлений о доступности, чтобы получить вашу строку, как только она снова станет доступной, например.

Вы должны класс, чтобы обработать соединение для вас. Таким образом, у вас есть больше контроля над тем, что происходит с ним. MKNetworkKit это решение, вы можете проверить его здесь.

Другие вопросы по тегам