Tag: 并发性

序列化NSURLConnection请求(iOS) – 使用同步请求?

我正在循环查看date列表,并向列表中的每个date的Web服务器发出请求。 我希望在将后续请求发送到服务器之前完全处理每个date。 为此,我build立了一个使用GCD的串行调度队列。 每次通过date循环时,一个块被添加到队列中。 我遇到的问题是我的NSURLConnection使用标准asynchronous调用进行设置。 这导致请求不会阻止任何后续请求。 他们因此超越对方。 我的问题:这是一个情况下,我有可能使用同步 NSURLConnection(在调度队列内)还是有一些其他方式使它使用标准asynchronous调用工作?

如何让UITableViewCell图像更新到下载的图像,而不必滚动UITableView

我试图拉我平常的UITableView +asynchronous下载+caching技术自己的味道。 我正在做的是,对于cellForRowAtIndexPath中出现的每个单元格: 1-Check if it's corresponding thumbnail image is already 'cached' in /Library/Caches 2-If it is, just use that. 3-If not, load a default image and enqueue an NSInvocationOperation to take care of it: 4a-The NSInvocationOperation gets the image from a remote server 4b-Does the UIGraphicsBeginContext thing to scale down the image to 40×40 […]

是否有必要在GCD下创build一个autorelease池?

我有一个CAEAGLLayer的运行循环方法,它使用GCD序列化访问共享ivars。 我的绘图代码目前是这样构造的: – (void)draw { dispatch_sync(serialDrawingQueue, ^{ @autoreleasepool { [self drawingStart]; [spriteA draw]; [spriteB draw]; [self drawingEnd]; } }); } draw方法由CADisplayLink调用。 我使用GCD块时需要@autoreleasepool吗?

如何在仅处理最新请求的iOS中实现工作队列?

在我的iOS程序中,会发生以下情况:在用户键入的情况下,将请求发送到启动数据库查找的线程。 当数据库查找完成后,在主线程上触发响应,以便应用程序可以显示结果。 这样做效果很好,除非用户键入的速度非常快,否则可能有多个请求正在进行。 最终系统将迎头赶上,但似乎效率低下。 有没有一个简单的方法来实现它,以便如果一个请求被启动,我可以检测到一个查询已经在进行中,而该请求应该被存储为“潜在的最新超过一个在飞行中”? 示例解决scheme,添加以下注释 下面是一个小样本项目的视图控制器的主体,它演示了解决scheme的属性。 当你input你可能会得到这样的输出: 2012-11-11 11:50:20.595 TestNsOperation[1168:c07] Queueing with 'd' 2012-11-11 11:50:20.899 TestNsOperation[1168:c07] Queueing with 'de' 2012-11-11 11:50:21.147 TestNsOperation[1168:c07] Queueing with 'det' 2012-11-11 11:50:21.371 TestNsOperation[1168:c07] Queueing with 'dett' 2012-11-11 11:50:21.599 TestNsOperation[1168:1b03] Skipped as out of date with 'd' 2012-11-11 11:50:22.605 TestNsOperation[1168:c07] Up to date with 'dett' 在这种情况下,第一个排队操作被跳过,因为它确定在执行其冗长的部分工作时它已经过时。 接下来的两个排队操作(“de”和“det”)在被允许执行之前被取消。 最后的最终作业是唯一一个真正完成所有工作的人。 如果你注释掉[self.lookupQueue cancelAllOperations]这一行,你会得到这个行为: […]