Я хочу использовать метод 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).
Идея состоит в том, чтобы зарегистрироваться для получения уведомлений о доступности сети.
Итак, в вашем коде:
- Проверьте доступность сетевого ресурса перед получением нужной вам строки.
- Если это возможно, используйте свой код БЕЗ времени (ИСТИНА)
- Проверьте вашу строку на наличие ошибок при получении ее на стороне клиента = в вашем коде
Если сеть недоступна, вам нужно будет сообщить пользователю, что сеть недоступна, и зарегистрироваться для получения уведомлений о доступности, чтобы получить вашу строку, как только она снова станет доступной, например.
Вы должны класс, чтобы обработать соединение для вас. Таким образом, у вас есть больше контроля над тем, что происходит с ним. MKNetworkKit
это решение, вы можете проверить его здесь.