2013-04-16 139 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