私はプロジェクトに取り組み始めました。このプロジェクトは、過去数年間に何人かによって開発されたもので、CocoaLumberjack の設定方法は次のとおりです。
次の 2 つのファイルがあります。
LogLevelInfo.h
static const int ddLogLevel = DDLogLevelInfo;
#define VAR_LOG_VERBOSE __unused
LogLevelVerbose.h
static const int ddLogLevel = DDLogLevelVerbose;
#define VAR_LOG_VERBOSE
これら 2 つのファイルは、使用するログ レベルに応じて、別のクラスによってインポートされます。
実行する必要があるため、ソースコードの一部をフレームワークに抽出し始めました。これが私がトラブルを起こし始めたところです。一部のソース コードでは既にログに CocoaLumberjack を使用しているため、LogLevelInfo.h と LogLevelVerbose.h もフレームワークに配置する必要がありました。ここまでは順調ですね。フレームワーク プロジェクトはコンパイル可能で、エラーをスローしません。
親プロジェクトから LogLevelVerbose.h と LogLevelInfo.h を削除し、Cocoapods を使用してフレームワークを統合しました。ddLogLevel
Xcode は再定義されたことを教えてくれますRedefinition of ddLogLevel
(Pods サブディレクトリの LogLevelVerbose.h にエラーが表示されます。正直に言うと、開発 Pods サブディレクトリ)。
Xcode プロジェクト内で ddLogLevel を再定義しても問題がなかった理由と、別のプロジェクトのフレームワーク内で使用するときに問題になる理由を誰かが説明できますか? 残念ながら、フレームワークと親プロジェクトに CocoaLumberjack が必要です :-(.
次に、CocoaLumberjack.h でこれを見つけました。
* Step 1:
* Import the header in your implementation or prefix file:
*
* #import <CocoaLumberjack/CocoaLumberjack.h>
*
* Step 2:
* Define your logging level in your implementation file:
*
* // Log levels: off, error, warn, info, verbose
* static const DDLogLevel ddLogLevel = DDLogLevelVerbose;
*
* Step 2 [3rd party frameworks]:
*
* Define your LOG_LEVEL_DEF to a different variable/function than ddLogLevel:
*
* // #undef LOG_LEVEL_DEF // Undefine first only if needed
* #define LOG_LEVEL_DEF myLibLogLevel
*
* Define your logging level in your implementation file:
*
* // Log levels: off, error, warn, info, verbose
* static const DDLogLevel myLibLogLevel = DDLogLevelVerbose;
しかし、名前を myLibLogLevel に変更した後は、すべてがほぼ同じままでした。Xcodeは私に言い続けましたRedefinition of myLibLogLevel