启用CocoaLumberjack 1.9.x遗留宏+重新定义DDLogWarn宏

bra*_*ray 1 cocoa-touch ios cocoalumberjack

我有一个项目使用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.
Run Code Online (Sandbox Code Playgroud)

在主项目中,我没有导入DDLog.h的文件.只有Pods中的CocoaLumberjack导入DDLog.h.

我也得到了DDLogError macro redefined,DDLogInfo macro redefined等警告.导致这种情况的问题是什么?

小智 5

我认为问题源于DDLegacyMacros.h缺失:

#if DD_LEGACY_MACROS
Run Code Online (Sandbox Code Playgroud)

在第21行和:

#endif
Run Code Online (Sandbox Code Playgroud)

在第75行.然后在DDLog.h中,替换:

#if DD_LEGACY_MACROS
    #import "DDLegacyMacros.h"
#endif
Run Code Online (Sandbox Code Playgroud)

有:

#import "DDLegacyMacros.h"
Run Code Online (Sandbox Code Playgroud)

https://github.com/CocoaLumberjack/CocoaLumberjack/commit/9b31277c90d7c3968038af09a7bddd003aa28da9

use_frameworks!在Cocoapods中应用新选项时,会自动生成桥接标头.此桥接标头必须DDLegacyMacros.h 直接导入.这导致CocoaLumberjack 1.9.x legacy macros enabled.macro redefined警告.

因此仅仅检查DDLog.h中的标志是不够的.