2009-09-14 76 views
4

我是相當新的Objective-C和我無法理解的警告信息下面的代碼塊:Objective-C的警告

void PrintPathInfo() { 
    NSString *path = @"~"; 
    NSString *message = @"My home folder is: "; 

    NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]); 
} 

這是我收到的最後一行警告消息(致電NSLog):

warning: format not a string literal and no format arguments 

有人可以澄清嗎?這是我應該關注的警告信息嗎?

謝謝。

回答

9

你的代碼應該工作得很好,但如果有任何「%」格式在通過與字符串的字符可以胡作非爲這可能會混淆NSLog。例如,嘗試將其交換到代碼中:

NSString *message = @"My home %folder is: "; 

NSLog將以不好的方式解釋'%f'。

可以避開警告(和危險),使用字符串字面量格式和傳遞您的字符串,像這樣:

NSLog(@"%@%@", message, [path stringByExpandingTildeInPath]); 

您還可以檢查此鏈接:

http://www.cocoabuilder.com/archive/message/cocoa/2009/8/29/243819

祝你好運!

+0

謝謝 - 現在有道理。 – IUnknown 2009-09-14 04:15:25

2

如果你想寫的輸出的NSLog你需要的東西是這樣的:

NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);