问题标签 [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.
objective-c - 为什么这个块在创建时不捕获变量值
我在使用 GCD 的 Objective-C 中有以下问题,我无法弄清楚:
我正在使用以下方法来计算一些 648 个图块。首先处理哪些图块的顺序由一些设置变量“pi”的算法给出。变量“loaded”在这种情况下是全局的,从 0 开始,正确地上升到 647。
不使用该块时一切正常。
问题:
我得到一个异常,因为该块试图访问 self.tiles[648]!在 Apple 的块文档中,它说,块内的变量值是在创建块时捕获的,所以我不明白,这怎么可能。我确实理解实际上加载的变量最终确实具有值 648,它应该中止循环而不执行。其他一些奇怪的是,值 0 也从未在块中使用,但它以 1 开头。有时也可以看到块在关于加载值的循环之前,有时根本错过值,或者做一些两次。这是一些输出:
为什么以及如何做到这一点?
感谢您的澄清,正如我认为 Apple 的文件明确指出的那样,当创建块时,应该捕获“已加载”的值,而不再为该块进行更改。
ios - 我应该向 ios 开发后台发送 Web 服务调用吗
在我的应用程序中,我需要调用 Web 服务来获取数据(http get)。我是一个新的 ios 开发人员,我想知道我是否应该将 http get 调用发送到后台,并将 tableview 重新加载数据带到前台,如下面的代码?谢谢一堆!
ios - 使用 FMDB 将数据插入 SQLite 时 dispatch_async 上的 EXC_BAD_ACCESS
所以,我已经阅读了我在互联网上找到的所有帖子,但我似乎仍然无法完成这项工作。
我正在尝试将大量数据插入 sqlite 数据库。这是20000行数据,所以我必须在后台线程中进行。
我有一个 NSObject .h 和 .m 文件来处理数据库操作。我从我的主视图中调用它们。
这是我的代码:
为了在主视图中调用该方法,我这样称呼它:
我试过用 FMDatabaseQueue 更改 FMDatabase,但没有成功。因此,任何帮助将不胜感激,因为我对此非常绝望。
谢谢。干杯!
objective-c - 了解 dispatch_async
我对这段代码有疑问
这段代码的第一个参数是
我们是否要求此代码在其定义本身是返回给定优先级的全局并发队列的全局队列上执行串行任务?
dispatch_get_global_queue
使用主队列有什么优势?
我很困惑。您能否帮助我更好地理解这一点。
ios - UIImageView 滚动暂停一秒钟
我正在尝试使用uiimage-from-animated-gif将一些 GIF 加载到我的 UITableView 单元格中。但问题是每次我尝试从缓存中加载图像时,单元格在滚动之前都会暂停一点。
这是我使用的代码
我也尝试过后台队列。但是图像加载真的很慢。
我不确定我做错了什么。也许我没有掌握一个概念。
Maycoff 建议我不应该从后台队列修改用户界面对象(如 UIImageView)的属性,并且我需要在后台队列上创建 UIImage 的实例,有人可以向我解释一下我不是什么抓?
提前感谢您的帮助。
ios - 使用应用程序的默认全局队列将图像保存在核心数据中会导致冻结?
我正在开发一个应用程序从 facebook 获取图像的应用程序。我正在使用核心数据来保存图像。我使用dispatch_asyc
函数将图像保存在核心数据中。我用
保存图像,以便我的主线程不会阻塞。
但有时我观察到应用程序冻结并且没有响应。我使用相同的方式将图像保存到应用程序中不同位置的核心数据,例如如果用户转到已签名的用户个人资料,则应用程序以相同的方式保存他的相册照片。此外,如果用户全屏查看任何图像,它会开始以相同的方式获取评论、喜欢和保存。
如果我使用私人队列并将其用于保存,则应用程序不会冻结。
由于我在应用程序的许多地方都使用全局队列,这是冻结应用程序的原因吗?
谢谢。
objective-c - 使用 dispatch_async 调用测试代码
在 TDD 之后,我正在开发一个 iPad 应用程序,该应用程序从 Internet 下载一些信息并将其显示在列表中,允许用户使用搜索栏过滤该列表。
我想测试一下,当用户在搜索栏中键入时,带有过滤器文本的内部变量会更新,过滤后的项目列表也会更新,最后表格视图会收到“reloadData”消息。
这些是我的测试:
注意:更改“filterText”属性现在会触发实际的过滤过程,该过程已在其他测试中进行了测试。
这可以正常工作,因为我的 searchBar 委托代码编写如下:
问题是过滤这些数据正在成为一个繁重的过程,目前正在主线程上完成,因此在此期间 UI 被阻塞。
因此,我想到了做这样的事情:
这样过滤过程发生在不同的线程中,当它完成时,表被要求重新加载它的数据。
问题是......我如何在 dispatch_async 调用中测试这些东西?
除了基于时间的解决方案之外,还有其他优雅的方法吗?(比如等待一段时间并期望这些任务已经完成,不是很确定)
或者也许我应该把我的代码放在不同的方式上,让它更容易测试?
如果您需要知道,我正在使用Jon Reid的OCMockito和OCHamcrest。
提前致谢!!
ios - 即使使用调度,iOS也会延迟
我有一个壁纸应用程序,在主视图上有一个分页滚动视图。滚动视图的每一页显示 9 张图像。当视图滚动时,我正在加载接下来的 10 页图像并将之前加载的 10 页 uiimages 设置为 nil 以防止内存警告。
问题是当视图滚动时,滚动视图的以下方法被调用,即使我已将加载新图像的块代码放在 dispatch_async 中,视图滚动前也有几秒钟的延迟。当我用调度的东西注释掉代码的整个部分时,没有延迟。
如果有人知道为什么会发生这种情况。请让我知道。
非常感谢大家
脑法imageWith:
ios - iOS 中的 dispatch_async 和阻塞
这段代码是什么意思?
请简要解释一下。