我有一个项目使用Cocoalumberjack 2.x作为Cocoapod。该项目主要使用Obj-C,但也使用了一些Swift类。
我总是得到这些警告:
Disable legacy macros by importing CocoaLumberjack.h or DDLogMacros.h instead of DDLog.h or add `#define DD_LEGACY_MACROS 0` before importing DDLog.h.
在主项目中,我没有导入DDLog.h的文件。只有Pods中的CocoaLumberjack导入DDLog.h。
我也收到DDLogError macro redefined
,DDLogInfo macro redefined
等警告。
导致这种情况的问题是什么?
答案 0 :(得分:5)
我认为问题源于DDLegacyMacros.h缺失:
#if DD_LEGACY_MACROS
在第21行和:
#endif
在第75行。然后在DDLog.h中,替换:
#if DD_LEGACY_MACROS
#import "DDLegacyMacros.h"
#endif
使用:
#import "DDLegacyMacros.h"
https://github.com/CocoaLumberjack/CocoaLumberjack/commit/9b31277c90d7c3968038af09a7bddd003aa28da9
在Cocoapods中应用新的use_frameworks!
选项时,桥接标头
自动生成。此桥接标头必须导入DDLegacyMacros.h
直。
这会导致CocoaLumberjack 1.9.x legacy macros enabled.
和macro
redefined
警告。
因此仅仅检查DDLog.h中的标志是不够的。