RestKit と CocoaLumberjack の両方を使用するプロジェクトに取り組んでいます。このプロジェクトは他のポッドも使用しますが、そのうちのいくつかは迅速にしか存在しません。依存関係の管理に cocoapods 0.38.2 を使用します。ポッドファイルは次のようになります (読みやすくするために他のポッドを削除しています)。
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 に直接依存していませんが、CocoaLumberjack を検出して、可能であれば使用しようとしますが、惨めに失敗します。ポッドを変更する必要がないように、プロジェクト レベルから RestKit を Lumberjack にリンクする方法はありますか?
サンプルプロジェクトはここにあります