7

次のコードから「未使用のパラメーター 'testString'」という警告が表示されます。しかし、ログには testString を使用しています。では、どうして未使用なのですか?

- (void)getString:(NSString *)testString {
          ICELogInfo(@"%@", testString);
}

ICELogInfo は NSLog のマクロです。

#define ICELogInfo(fmt, ...) LOG_FORMAT(fmt, @"INFO", ##__VA_ARGS__)
#define LOG_FORMAT(fmt, lvl, ...) LOG_FORMAT_NO_LOCATION(fmt, lvl, ##__VA_ARGS__)
#define LOG_FORMAT_NO_LOCATION(fmt, lvl, ...) NSLog((@"%@ " fmt), lvl, ##__VA_ARGS__)

私が間違っていることは何ですか?

4

3 に答える 3

6

あなたは何か間違ったことをしていません。これは、マクロを使用する際によくある問題です。

警告を取り除きたい場合の回避策として、次のコードを使用できます。

- (void)getString:(NSSTring*) __unused testString {
          ICELogInfo(@"%@", testString);
}
于 2013-07-09T19:02:29.633 に答える
2

私は以前に同じ「問題」に遭遇しました。unusedフラグを例として使用して解決しました

- (void)getString:(NSString *)testString {
    ICELogInfo(@"%@", testString);
    #pragma unused (testString)
}
于 2013-07-09T19:05:25.897 に答える