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

时间:2013-11-27 19:13:51

标签: ios debugging macros frameworks

任何人都可以通过在ios中构建框架时使用打印一些信息到控制台来告诉如何使用像debuglog这样的宏,当应用程序开发人员在调试模式下使用此框架运行应用程序时,它应该可以工作。

1 个答案:

答案 0 :(得分:1)

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