项目框架+中的Cocoalumberjack

时间:2017-01-09 09:36:15

标签: ios frameworks cocoalumberjack

我已经开始研究一个项目,这个项目是由一些人在过去几年开发的,这就是他们设置CocoaLumberjack的方式:

有以下2个文件:

LogLevelInfo.h

static const int ddLogLevel = DDLogLevelInfo;
#define VAR_LOG_VERBOSE __unused

LogLevelVerbose.h

static const int ddLogLevel = DDLogLevelVerbose;
#define VAR_LOG_VERBOSE

这两个文件由不同的其他类导入,具体取决于应使用的日志级别。

现在我开始将一些源代码提取到Framework中,因为必须这样做。这是我开始遇到麻烦的地方。一些源代码已经使用CocoaLumberjack进行日志记录,因此我必须将LogLevelInfo.h和LogLevelVerbose.h也放入Framework中。到现在为止还挺好。 Framework项目是可编译的,不会抛出任何错误。

我已从父项目中删除了LogLevelVerbose.h和LogLevelInfo.h,并使用Cocoapods集成了我的Framework。现在Xcode告诉我ddLogLevel已被重新定义:Redefinition of ddLogLevel(在我的Pods子目录中显示LogLevelVerbose.h中的错误。显然,开发窗口子目录。)

有人可以解释为什么在Xcode项目中没有重新定义ddLogLevel的问题以及为什么在另一个项目的框架中使用它时出现问题?不幸的是,我需要框架中的CocoaLumberjack以及父项目: - (。

然后我在CocoaLumberjack.h中发现了这个:

 * Step 1:
 * Import the header in your implementation or prefix file:
 *
 * #import <CocoaLumberjack/CocoaLumberjack.h>
 *
 * Step 2:
 * Define your logging level in your implementation file:
 *
 * // Log levels: off, error, warn, info, verbose
 * static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
 *
 * Step 2 [3rd party frameworks]:
 *
 * Define your LOG_LEVEL_DEF to a different variable/function than ddLogLevel:
 *
 * // #undef LOG_LEVEL_DEF // Undefine first only if needed
 * #define LOG_LEVEL_DEF myLibLogLevel
 *
 * Define your logging level in your implementation file:
 *
 * // Log levels: off, error, warn, info, verbose
 * static const DDLogLevel myLibLogLevel = DDLogLevelVerbose;

但是在将名称更改为myLibLogLevel之后,一切都保持不变。 Xcode一直告诉我Redefinition of myLibLogLevel

0 个答案:

没有答案