未使用的参数警告

时间:2013-07-09 18:52:01

标签: ios objective-c xcode macros clang

我从以下代码获取“未使用的参数'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__)

我做错了什么?

3 个答案:

答案 0 :(得分:5)

你没有做错事。这是使用宏时的常见问题。

如果您想要摆脱警告,可以使用此代码作为解决方法:

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

答案 1 :(得分:2)

我遇到了同样的问题"之前。通过使用unused标志来解决它。

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

答案 2 :(得分:1)

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

[LLVMbugs] [Bug 12153] New: Incorrect warning about unused parameter when using capturing variadic parameter in lambda

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