gpt4 book ai didi

c++ - iOS debugBlock 宏

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:08:34 25 4
gpt4 key购买 nike

相信很多人都知道这个宏

#ifdef DEBUG 
#define DebugLog( s, ... ) NSLog( @"<%p %@:(%d)> %@", self, [[NSString stringWithUTF8String:__FILE__] lastPathComponent], __LINE__, [NSString stringWithFormat:(s), ##__VA_ARGS__] )
#else
#define DebugLog( s, ... )
#endif

这当然会创建一个名为 DebugLog 的函数,您可以使用它来代替 NSLog。然后,当您将项目更改为调试状态时,它将停止执行所有 NSLogs 语句。

我在想的是,有没有一种方法可以让它工作,但需要使用 block 。换句话说,我希望能够做到这一点:

DebugBlock(^{
//Code to only be executed while in Debug
});

是的,我意识到我可以在所有地方执行#ifdef DEBUG,但这对我来说还不够花哨:)。

最佳答案

我对它的简单程度感到有点愚蠢,但这是解决方案。

#ifdef DEBUG 
#define DebugBlock( ... ) dispatch_sync(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ##__VA_ARGS__)
#else
#define DebugBlock( ... )
#endif

用法看起来有点像这样:

DebugBlock(^{
int i = 12;
int b = 400;
int Answer = i+b;
NSLog(@"%d", Answer);
});

如果您愿意,您也可以更改异步的调度类型。

关于c++ - iOS debugBlock 宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8783363/

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