2012-04-17 35 views
5

Tôi muốn tải xuống với thời gian chờ ngắn hơn, để nó nhanh hơn và ngăn ứng dụng bị lỗi khi kết nối kém.Cách đặt thời gian chờ cho dataWithContentsOfURL: url

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

Tôi không giỏi về mục tiêu C, vì vậy tôi yêu cầu sự giúp đỡ của bạn, để thực hiện việc này. Cảm ơn.

+0

Thời gian chờ ngắn sẽ không làm cho kết nối của bạn nhanh hơn! Nhưng có một cái nhìn tại NSURLConnection. –

Trả lời

2

Bạn không thể kiểm soát tốc độ tải xuống bằng cách đặt thời gian chờ. Điều đó sẽ chỉ kiểm soát thời gian ứng dụng của bạn đã chờ trước khi từ bỏ việc tải xuống. Bạn nên cấu trúc lại ứng dụng của mình để tải dữ liệu hình ảnh trong nền, để giao diện người dùng vẫn đáp ứng cho đến khi quá trình tải xuống hoàn tất.

Kiểm tra NSURLConnection (sendAsynchronousRequest) hoặc AFNetworking.

+1

Ok. Tôi đã biết thời gian chờ ngắn hơn sẽ không khiến tải xuống nhanh hơn. Cách tải xuống từ URL không thể truy cập được, việc đặt thời gian chờ có thể ít nhất là tránh tải xuống không cần thiết. Sau đó, làm thế nào bạn có thể đặt thời gian chờ trên '[NSData dataWithContentsOfURL: url]'? – Yeung

+0

@Yeung - bạn không thể afaik. Trong trường hợp bạn cần có thể kiểm soát cài đặt hết thời gian chờ truy xuất dữ liệu từ URL, hãy sử dụng các phương thức từ ['NSURLConnection'] (http://developer.apple.com/library/mac/#documentation/Cocoa/Reference /Foundation/Classes/NSURLConnection_Class/Reference/Reference.html) lớp thay thế. – Perception

9

Những ngày này, có thể. API giống như sau:

NSURLResponse* urlResponse; 
NSError* error; 
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20]; 
NSData* d = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&urlResponse error:&error]; 
Các vấn đề liên quan