Я работаю над проектом, в котором используются как RestKit, так и CocoaLumberjack. В проекте также используются некоторые другие модули, некоторые из них существуют только в 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!
из-за тех других модулей, которые предназначены только для быстрых. Я пытаюсь скомпилировать это с помощью 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 на уровне моего проекта, чтобы мне не приходилось изменять модули?
Пример проекта можно найти здесь