gpt4 book ai didi

objective-c - 主线程中的 dispatch_get_main_queue()

转载 作者:太空狗 更新时间:2023-10-30 03:11:10 29 4
gpt4 key购买 nike

我有在某些情况下更改 UI 的方法。

例如:

-(void) myMethod {

if(someExpressionIsTrue) {
// make some UI changes
// ...
// show actionSheet for example
}
}

有时 myMethodmainThread 调用,有时被一些 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com