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 回答
1

你使用的是什么版本的 Xcode?这看起来像是一年多前 LLVM 中的 lambda 捕获错误:

[LLVMbugs] [Bug 12153] 新:在 lambda 中使用捕获可变参数时有关未使用参数的错误警告

因为这些宏中的VA_ARGS有望解决该错误报告中描述的相同问题;但它应该在最近的 Xcode 中得到解决。绝对是在我现在正在运行的 Xcode 5 DP 3 中,您的代码没有给我任何警告。

于 2013-07-13T19:51:25.660 回答