ios - ios 自定义框架中的宏定义不起作用

标签 ios debugging macros frameworks

可以请任何人告诉如何在 ios 中构建框架时通过打印一些信息来控制台来使用 debuglog 等宏,并且当应用程序开发人员在 Debug模式下使用此框架运行应用程序时它应该可以工作。

最佳答案

1) 在你的库中用一些奇怪的名字定义一个全局 BOOL:

BOOL GzRkYr22; // (use your framework name as prefix or suffix)

2) 为您的用户提供一些方法来打开或关闭标志:

- (void)enabledDebuggingMessages:(BOOL)val;

该方法将设置全局标志。

3) 将其放入您的 .pch 文件

extern BOOL GzRkYr22;

#define Log(format, ...) \
do { if(GzRkYr22 ) NSLog(format, \
## __VA_ARGS__); \
} while(NO)

4) 在您的代码中添加日志消息:

Log(@"Just did %d operations", someNumber);

5) 如果您后来决定只为您的库的“调试”版本提供日志消息,但对于“生产”版本则完全禁用它们:

#ifndef NDEBUG // some macro that is defined or not defined for the different modes

#define Log(format, ...) \
do { if(GzRkYr22 ) NSLog(format, \
## __VA_ARGS__); \
} while(NO)

#else

#define Log(format, ...)

#endif

关于ios - ios 自定义框架中的宏定义不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20251116/

相关文章:

.net - 您可以在 VS2008 IDE 中修改 CPU 寄存器吗?

macros - 如何编写 MIT Scheme 宏来返回 lambda 形式?

C 预处理器宏

iOS: block 、主队列和循环保留

ios - iPhone X 真实深度图像分析与 CoreML

iphone - 如何将我的应用程序放入 iPhone 3G?

html - iOS 中的 Jquery Mobile 滚动和标题问题

android - 如何在 Amazon Kindle Fire 上调试 android 应用程序?

emacs - Emacs Lisp 中的 "with-eval-after-load"是什么

c# - Break at throw 捕获异常