2012-04-17 4 views
5

더 짧은 시간 제한으로 다운로드하여 잘못된 연결로 인해 응용 프로그램이 충돌하지 않도록하고 싶습니다.dataWithContentsOfURL에 대한 시간 제한을 설정하는 방법 : url

- (void) CreateTitleView { 
    NSURL* url; 
    NSData* imageData; 
    imageData = [NSData dataWithContentsOfURL:url ]; 
    UIImage* image = [UIImage imageWithData:imageData]; 
} 

나는 객관적인 C가 좋지 않으므로, 도움을 요청합니다. 감사.

+0

짧은 시간 제한으로는 더 빨리 연결할 수 없습니다! NSURLConnection을 살펴보십시오. –

답변

2

제한 시간을 설정하여 다운로드 속도를 제어 할 수 없습니다. 이는 다운로드를 포기하기 전에 애플리케이션이 대기 한 시간 만 제어합니다. 다운로드가 완료 될 때까지 UI가 응답 할 수 있도록 이미지 데이터를 백그라운드에서로드하도록 응용 프로그램을 리팩토링해야합니다.

NSURLConnection (sendAsynchronousRequest) 또는 AFNetworking을 확인하십시오.

+1

확인. 더 짧은 시간 제한으로 인해 다운로드 속도가 빨라지지는 않습니다. 도달 할 수없는 URL에서 다운로드하는 방법은 시간 초과를 설정하면 불필요한 다운로드를 피할 수 있습니다. 그렇다면'[NSData dataWithContentsOfURL : url]'에서 어떻게 타임 아웃을 설정할 수 있습니까? – Yeung

+0

@Yeung - 당신은 afaik 할 수 없습니다. URL에서 데이터를 가져 오기위한 시간 제한 설정을 제어 할 수 있어야하는 경우에는 ['NSURLConnection'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference /Foundation/Classes/NSURLConnection_Class/Reference/Reference.html) 클래스를 대신 사용하십시오. – Perception

9

요즘은 가능합니다. API는 다음과 같습니다.

NSURLResponse* urlResponse; 
NSError* error; 
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20]; 
NSData* d = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&urlResponse error:&error]; 
관련 문제