Тайм-аут stringwithcontentsofurl

У меня есть этот вызов для stringwithcontentsofurl:

[NSString stringWithContentsOfURL:url usedEncoding:nil  error:nil];

Как я могу дать простой тайм-аут? Я не хочу использовать потоки или рабочие очереди (содержание URL-адреса составляет около 100 символов), я просто не хочу слишком долго ждать, когда соединение происходит медленно.

Ответ 1

В этом случае вам может быть лучше использовать метод класса NSURLConnection +sendSynchronousRequest:returningResponse:error:; он вернет объект данных, который вы можете инициализировать своей строкой (используя -initWithData:encoding:). Вы можете указать тайм-аут, создав NSURLRequest с помощью метода -initWithURL:cachePolicy:timeoutInterval:, затем передайте этот запрос в качестве первого параметра +sendSynchronousRequest:returningResponse:error:.

Ответ 2

Вот мой пример:

NSString* link = @"http://example.com";
NSURLRequest* request = [NSURLRequest requestWithURL:[NSURL URLWithString:link] cachePolicy:0 timeoutInterval:5];
NSURLResponse* response=nil;
NSError* error=nil;
NSData* data=[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString* stringFromServer = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];