问题标签 [dispatch-async]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
507 浏览

objective-c - 调度队列和全局 NSMutableDictionary - Objective C

我正在尝试使用调度队列中的全局 NSMutableDictionary 。但是,这些项目不断返回 NULL。

我要做的是使用 dispatch_queue 访问外部 json 文件,然后使用此信息填充 UITableView。

这就是我所拥有的

vc.h:

vc.m:

如果我访问队列中的 jsonArray,它会返回正常并打印城市的日志。但是,如果我尝试在队列外使用它,它会返回 NULL。

我想弄清楚发生了什么,有什么想法吗?

我需要在同一个视图中以不同的方法使用 jsonArray,所以我需要它是全局的。

0 投票
2 回答
4016 浏览

ios - 同步块和 dispatch_async

当我们在块内调用 dispatch_async() 时,使用 @synchronized() 在 IOS 中的锁会发生什么情况。

例如:

dispatch_async 调用中的锁是否仍然有效?或者更重要的是,在 dispatch_async() 中使用另一个 @synchronized() 调用有什么缺点吗?

0 投票
2 回答
1447 浏览

ios - 串行调度队列如何保证资源保护?

如果我提交 100 个任务,每个任务都访问并改变银行账户余额,我知道串行队列将按顺序执行每个任务,但是在使用 dispatch_async 时这些任务是否也按顺序完成?

如果我异步提交到串行队列的任务 #23 需要很长时间才能完成怎么办?任务 #24 会仅在任务 #23 完成后开始,还是任务 #24 在任务 #23 完成之前开始?如果是这样,任务#24 在开始工作时会不会出现错误的银行账户余额,从而破坏数据完整性?

谢谢!!

0 投票
1 回答
9230 浏览

objective-c - 如何将 (OS_dispatch_data *) 5018112 字节转换为 NSData 以放入 UIImage

我一直在寻找这个问题的答案,有些似乎它们可能是我需要的,但我不确定。我找到了这个问题 #9152851和这个问题 #2617625并在一堆链接上戳了一下,但我需要一些指导。

本质上,我正在调度异步调用以使用 OpenCV 处理图像。您可以通过此处的代码看到我将其转换为 NSData *,然后再将其发送回我的代表。

但是当我回到我的委托时,我的处理位图是 (OS_dispatch_data *) 类型并且包含一个字节值。所以,当我尝试设置 UIImage 时,它​​被设置为 null。

这是值的屏幕截图:

伊姆古尔

那么,我如何将这些字节(或它们是什么)转换为我可以填充到 UIImage 中的东西?

预先感谢您的帮助。

-------------------------------------------------- -----添加新图像-----------------------------------------

我的字节

这个新图像有帮助吗?

谢谢你。

0 投票
1 回答
72 浏览

ios - while (condition) {} 是否会破坏 NSRURLConnection 的连接?

我改变了我的旧的NSthread,因为无法从后台线程更新 UI。现在我正在使用dispatch_async.

问题是当此代码第二次执行时,在 ApplicationDidBecomeActive 中(当用户隐藏并再次显示应用程序时)永远不要退出那个同时,保持无限循环。

这里我展示了关于dispatch_async的新代码,NSURLConnection代码一直有效,最后恢复...我认为问题不存在

第一个连接(json),而不是我在那个时候等待:

用他们的方法:

有任何想法吗?再次感谢。

0 投票
2 回答
826 浏览

ios - setNeedsDisplay 在主队列上提交但未被调用

下面的方法是在非主线程上调用的,具体来说是在录音队列回调中

其中 myGraphView 是一个自定义 UIView 对象。据我所知,setNeedsDisplayInRect:应该在主线程上调用,这就是我准备dispatch_async...就绪的原因。现在的问题是- (void)drawRect:(CGRect)rect我为 myGraph 实现的方法永远不会被调用,即使NSLog块中的 已经被调用了很多次。

0 投票
2 回答
527 浏览

ios - dispatch_async 永远不会完成整个块的执行

我是 GCD 的新手,似乎简单的使用它对我不起作用。我有以下代码:

日志显示“顶部”,没有其他内容。中间的代码没有无限循环——它永远不会一直执行。我可以在中间的代码中设置断点,程序执行会中断,之后不会中断。中间有一个点,有时执行会在断点处停止,有时则不会。

在我看来,synchronizationQueue 调度队列似乎正在被释放,但我不能调用 dispatch_retain,因为编译器抱怨 dispatch_retain 不能在 ARC 中使用。我错过了什么?

作为对人们询问中间代码的回应,程序执行在此方法调用中停止(由...code...的这些行之一表示)在 if (fetchArray.count) 行中,注释如下.

我会补充一点,如果我简单地注释掉对 dispatch_async 的调用,那么一切都可以正常执行。它只是在主线程上执行,我宁愿让它不这样做。

0 投票
0 回答
207 浏览

ios - ALAssetLibrary performBlockAndWait(GUI 挂起问题)

我正在编写一个图像上传器,它索引相机胶卷上的某些事件,创建作业,然后将这些作业写入 CoreData。另一个线程从 CoreData 读取以上传图像。

我不断收到 UI 冻结。事件虽然 GUI 被冻结,但我可以看到后台队列仍在继续工作。当我中断(点击暂停按钮)时,我看到主线程通常看起来像这样

我搜索了通常的论坛,但似乎找不到关于队列和 ALAssetsLibrary 的大量信息。

让我再谈谈我的代码。当它们的图像被索引(使用_processingQueue)并写入核心数据时,我有一些块(使用主队列)将数据传递到视图控制器,例如#indexed、#skipped 等......因为它们被放入主队列,我没有看到问题。

由于图像是从 CoreData 中提取并上传的,因此有类似的方法可以移动上传进度条等......再次投射到主队列。

您认为问题可能出在哪里?我访问 ALAssetsLibrary 的方法在 @synchonized(self) 块中。这一切都在一个类中。

从多个队列访问图书馆是错误的吗?

0 投票
1 回答
615 浏览

ios - dispatch_async 不能一直工作

我有以下代码...

该方法display:将消息放在UITextView.

我在按下按钮时调用此函数。有时 dispatch_async 块没有被调用。它只是通过它。但是,我每次都可以看到打印的日志消息。

任何人都可以分享可能导致这种情况的原因吗?

0 投票
2 回答
277 浏览

ios - 如何停止加载数据

我有一个 UIImageView。此 imageView 的图像是从 Web 加载的。有人可以告诉我如何停止加载吗?

这是我的代码: