- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我有在某些情况下更改 UI 的方法。
例如:
-(void) myMethod {
if(someExpressionIsTrue) {
// make some UI changes
// ...
// show actionSheet for example
}
}
有时 myMethod
被 mainThread
调用,有时被一些 other thread
调用。
这就是为什么我希望在 mainThread
中确实执行这些 UI 更改。
我以这种方式更改了 myMethod
所需的部分:
if(someExpressionIsTrue) {
dispatch_async(dispatch_get_main_queue(), ^{
// make some UI changes
// ...
// show actionSheet for example
});
}
所以问题:
dispatch_async(dispatch_get_main_queue()
是安全且好的解决方案吗?它会影响性能吗?[NSThread isMainThread]
方法检查它是否是主线程并调用 dispatch_async
仅在其他线程的情况下,但它会让我再创建一个方法或阻止这些 UI 更新。最佳答案
从主队列中向主队列添加异步 block 没有问题,它所做的只是稍后在运行循环中运行该方法。
您绝对不想做的是调用 dispatch_sync
从主队列中向主队列添加一个 block ,因为您最终会锁定自己。
关于objective-c - 主线程中的 dispatch_get_main_queue(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18847438/
我有一个启用了分页的 UIScrollView,我想显示一些带有图像的“页面”。 我在主线程中加载第一页的图像并显示它。然后我开始在后台线程中加载其他页面图像 dispatch_async(l
我是 iOS 开发新手。我不知道 dispatch_get_main_queue() 所以我想从我的服务器图像 url 中获取图像大小,如 首先,我解析我的 JSON 数据并获取图像大小,如下所示 [
我使用 Reachability 和 dispatch_async(dispatch_get_main_queue() 测试互联网连接当我测试以下代码时,它可以正常工作,但会被多次调用。 家长: @p
我在 iOS 中学到了一条全局规则 -> 永远不要阻塞主线程。但是,有几次我遇到了违反此规则的开源代码片段。 下面是两个这样的例子: 以下函数取自 https://github.com/piwik/p
在完成例程中 [NSURLConnection sendAsynchronousRequest:request queue:que
我有一个 ViewController,点击按钮后我想从网络获取数据。 let myClass = Class() myClass.myMethod() { dispatch_
我有这段代码,有时变量 dConfiguration 是 Nil,我得到一个 EXC_BAD_ACCESS 错误,大多数时候变量说 0 键/值对,错误几乎不可能重现,我只需点击我的按钮大部分时间都能正
Utility.managedObjectContext().performBlockAndWait({ }) dispatch_sync(dispatch_get_main_queue(), { }
我有一些如下代码: - (void)viewDidLoad { [super viewDidLoad]; NSLog(@"1"); dispatch_async(dispatc
如何使用 DispatchQueue 类为 iOS 替换以下 Swift 代码?这是旧的 Swift 3 代码,最新的 Xcode 不会将其转换为 Swift 5。 dispatch_async(di
我有在某些情况下更改 UI 的方法。 例如: -(void) myMethod { if(someExpressionIsTrue) { // make some UI changes
关于this question我想知道关于何时使用 NSNotification(在主线程中有观察者)与使用 GCD 将工作从后台线程分派(dispatch)到主线程,是否有任何普遍接受的逻辑? 似乎
我的应用程序中有一个场景,我想在一个方法中执行一些耗时的任务,其中包括一些数据处理以及 UI 更新。我的方法是这样的, - (void)doCalculationsAndUpdateUIs {
当基本 SDK 设置为 10.9 时,我在 SWIFT 中使用“dispatch_get_main_queue()”时遇到困难。我使用的代码是一个简单的dispatch_async调用,如下所示: d
我想将所有读/写数据库操作放到后台队列中,并在完成时更新当前的 UI View 。 如果用户在我处理数据库时停留在 View 中,则没有问题。但是,如果用户在数据库操作完成之前离开该 View ,它将
我正在尝试在后台进程中创建多个 WKWebView View ,然后在它们全部完成加载后将它们添加到主线程上的 View 。 每个 WKWebView 都包含一个通过 javascript 呈现的图表
我继承了一个使用以下线程结构的代码库: dispatch_async(dispatch_get_main_queue(), { () -> Void in dispatch_async(dis
在 tutorial from Ray Wenderlich Series, 之一中他在完成 block 中使用了 dispatch_get_main_queue() 如下 func startFil
我刚刚开始在 iOS 上工作,并且一直在浏览 GCD 上的 Apple 引用资料。 dispatch_get_global _queue 返回一个并发队列,可以向其中提交要执行的 block 。 但是
我继承了一些具有这种相当不寻常的嵌套序列的代码。通常的范例将对主队列进行一次分派(dispatch)以更新 UI。下面显示的代码将对主队列的调度嵌套在对主队列的另一个调度中。 - (void)view
我是一名优秀的程序员,十分优秀!