gpt4 book ai didi

ios - 为 GCD 调用编写宏?

转载 作者:可可西里 更新时间:2023-11-01 05:02:58 24 4
gpt4 key购买 nike

我想为 GCD 调用创建一个宏,例如:

dispatch_async(dispatch_get_main_queue(), ^{
stuff....
});

宏看起来像这样:主要(^{...})?

不知道怎么写。有什么建议吗?

谢谢

最佳答案

建议:不要。除其他外,它会在调试时搞砸行号。

你实际上可以定义一个普通的函数来做同样的事情,如果你愿意的话,比如

typedef void(^VoidBlock)();
void on_main(VoidBlock block) {
dispatch_async(dispatch_get_main_queue(), block);
}

这样做的好处是您在调试期间不会丢失 block 的行号。我什至做过类似的事情

void on_main(VoidBlock block) {
if (dispatch_get_current_queue() == dispatch_get_main_queue()) {
block();
} else {
dispatch_sync(dispatch_get_main_queue(), block);
}
}

我可以从主队列调用也可以不调用。

真的想避免将代码块放在宏参数中。如果您这样做并且必须调试该代码,您会讨厌自己。 (有点开玩笑,但如果你必须调试任何扩展到多行代码的宏,那真的很痛苦。)

关于ios - 为 GCD 调用编写宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9435889/

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