私の IOS プロジェクトには、関数を含むカスタム ロガー クラス (シングルトン) があります。
- (void)log:(NSString *)domain logLevel:(int)level logMessage:(NSString *)message
これは、次のプリプロセッサ マクロを通じてグローバルに利用できます。
#define MyLog(domain, level, message) [[MyLogger sharedInstance] log:domain logLevel:level logMessage:message]
今私が電話をかけるとき:
MyLog(@"common", LL_ERROR, @"There was an error!");
すべて正常に動作します。しかし実際には、logMessage に文字列プレースホルダーが含まれることがあります。したがって、大きな問題は次のとおりです。マクロが次のような呼び出しを受け入れるようにするにはどうすればよいですか
MyLog(@"common", LL_ERROR, @"There was an error: %@", [error debugDescription]);
現在の解決策では、Xcode は「関数のようなマクロ呼び出しに提供された引数が多すぎます」と文句を言います。