2013-04-16 138 views
0

我在LazyLoader的應用程序中加載了一個圖像列表,我想在數據庫中添加圖像時更新此列表。我使用NSURLConnection來加載圖像異步數據加載iOS

+0

你能更具體一點嗎?你需要幫助哪部分?以下是對你的問題的一個試探性答案,我理解它的方式。 – Jean

回答

2

恕我直言,最簡單的選擇是將你的代碼放在一個塊中,讓它異步執行。這樣你保持簡單的流程。

爲此,使用方法:響應OP的評論

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), 
^{ 

    // INSERT YOUR CODE HERE 
    // Whatever you put in here will be executes asynchronously. 
}); 

編輯:

NSURLConnection的的方法:

- (id)initWithRequest:(NSURLRequest *)request delegate:(id <NSURLConnectionDelegate>)delegate 

不能使用。根據文檔:

連接的委託對象。隨着加載的進行,代表將收到 委託消息。到代理 的消息將在調用此方法的線程上發送。默認情況下,爲使 連接正常工作,調用線程的運行循環必須爲 ,並以默認運行循環模式運行。請參閱scheduleInRunLoop:forMode: 以更改運行循環和模式。

的解決方案是使用:

+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error 

沒有特定的線程或運行迴路配置必要在 調用線程以執行同步負荷。

或者使用方法:

+ (void)sendAsynchronousRequest:(NSURLRequest *)request queue:(NSOperationQueue *)queue completionHandler:(void (^)(NSURLResponse*, NSData*, NSError*))handler 

與塊完成處理程序。

注:
如果要執行的任務只請求完成後(例如調用代表)做的,然後sendAsynchronousRequest:queue:completionHandler:是最好的選擇。

+0

NSURL * myURL = [NSURL URLWithString:@「http://192.168.2.2/piwigo/ws.php?format=json&method=pwg.categories.getImages」]; NSMutableURLRequest * request = [NSMutableURLRequest requestWithURL:myURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:5.0]; [request setHTTPMethod:@「GET」]; imagesConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self]; –

+0

我把這段代碼放到你的區域,它不起作用 –

+0

@MohamedYahyaMzoughi它不能像這樣工作。請參閱文檔。您需要使用'sendSynchronousRequest'並相應地更新您的代碼(在調用'sendSynchronousRequest'後,您將自己調用委託。 – Jean