2009-09-14 53 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]);