你應該調查Cocoa Helpers - 它有SimpleHTTPLoader異步加載和ImageViewCached,它正是你所需要的。您不是創建imageView,而是創建ImageViewCached併爲其設置URL。它爲你完成剩下的工作。
但是,如果你想要做你的方式:
我不保證下面的代碼是正確的,但整個思路是(我把它從工作的代碼,並改寫了它對應你的任務。我用可可助手支持Base64解碼。你可以用自己的方法。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
NSString *query = [NSString stringWithFormat:@"site.example/image.jpg"];
NSString *data = [[[NSString alloc] initWithContentsOfURL:[NSURL URLWithString:query] encoding:NSUTF8StringEncoding error:nil] autorelease];
theImage = [UIImage imageWithData:(rfc::from_base64(data))]
dispatch_sync(dispatch_get_main_queue(), ^{
self.imageview.image = theImage;}
});
});
PS爲64位編碼的圖像,你不得不修改ImageViewCached它加載和解碼圖像。
感謝幫助,我無法理解正確地找到這段代碼。 但是這個隊列是否做了一些使它異步下載。 –
@AbhinandanSahgal在dispatch_async中,您可以編寫重型代碼,在dispatch_sync中編寫結果代碼。它在異步部分完成後執行。在我的代碼中,它用於將大部分數據發送到服務器。這是我的第一個項目,它可能是一個糟糕的代碼(由於高優先級或其他)的例子,但是當我不使用它時 - 應用程序停止,直到數據發送,這部分應用程序完美地工作和數據仍在發送。 – Protheus