2013-07-09 60 views
4

我從下面的代碼中收到「未使用的參數'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__) 

我做錯了嗎?

+0

當您使用警告運行它時,它會記錄什麼? –

+0

它會記錄「INFO < - testString - >」。記錄部分工作正常。我對輸出沒有任何問題。就是這個警告。 – AAV

+1

難道ICELogInfo在non-DEBUG情況下被定義爲「nothing」嗎? –

回答

4

你沒有做錯什麼。這是使用宏時的常見問題。

作爲一種解決辦法,如果你想擺脫的警告,您可以使用此代碼:

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

謝謝你,這是一個很好的解決方法,但我在尋找爲什麼? – AAV

2

我以前遇到同樣的「問題」。通過使用unused標誌來解決這個問題。

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

謝謝你,這是一個很好的解決方案,但我在尋找原因? – AAV