gpt4 book ai didi

ios - 有什么方法可以保证代码始终在主线程上执行?

转载 作者:行者123 更新时间:2023-11-29 02:59:50 26 4
gpt4 key购买 nike

如果这个问题听起来很愚蠢,请原谅,但这超出了我对 Objective-C 的了解。

我正在开发一些必须始终在主线程上执行的类。

好吧,我可以用一堆

来污染我的代码
  dispatch_async(dispatch_get_main_queue(),
^{

});

但我想知道我是否可以做些什么来防止此类的方法在其他非主线程上运行,或者至少在调试、编译或任何不使用它们的情况下发出警告在主线程上。

谢谢

最佳答案

我在 BLOCK_UI() 中加入了这些方法来自 https://github.com/gradha/ELHASO-iOS-snippets 的宏.在运行时,宏将断言该方法是否在主线程上运行。宏在发布版本中消失了,因为我认为在后台调用这样的 API 是程序员的错误,但是如果你想制作一个 permissive 的 API,你也可以检查 main线程并在需要时在主线程中调用自己。示例:

if ([NSThread isMainThread]) {
[self do_request:url];
} else {
[self performSelectorOnMainThread:@selector(do_request:)
withObject:url waitUntilDone:NO];
}

关于ios - 有什么方法可以保证代码始终在主线程上执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23443620/

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