我正在开发一个同时使用 RestKit 和 CocoaLumberjack 的项目。该项目还使用了其他一些 pod,其中一些仅存在于 swift 中。我使用 cocoapods 0.38.2 进行依赖管理,我的 podfile 看起来像这样(为了便于阅读,删除了其他 pod):
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '8.0'
use_frameworks!
pod 'RestKit'
pod 'CocoaLumberjack'
我需要使用use_frameworks!
这些其他 pod,因为它们是 swift-only。我尝试使用 Xcode7 beta 5 编译它,我收到以下错误:
“_OBJC_CLASS_$_DDLog”,引用自:
objc-class-ref in RKLumberjackLogger.o
ld:未找到架构 x86_64 的符号
所以我查看了有问题的文件,发现了这个:
#if __has_include("DDLog.h")
#import "RKLumberjackLogger.h"
#import "DDLog.h"
如果不存在,则看起来整个文件都没有解析DDLog.h
,在这种情况下,我认为 RestKit 日志记录会退回到 NSLog 或其他什么。否则,使用 Lumberjack 日志记录,这正是我想要的。
经过一番调查,我怀疑 RestKit 以某种方式看到了 CocoaLumberjack 标头(DDLog.h 所在的位置),但在构建项目时没有正确链接到它。如果您有更好的想法,请随意质疑,但我可以确认转到 CocoaLumberjack 源并手动将 DDLog.m 作为成员添加到 RestKit 框架目标允许我正确编译项目。
所以,我的问题是,解决这个问题的正确方法是什么?RestKit 不直接依赖 CocoaLumberjack,而是尝试检测它并尽可能使用它,但失败得很惨。有没有办法从我的项目级别将 RestKit 与 Lumberjack 链接起来,这样我就不必修改 pod?
示例项目可以在这里找到