我对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

有人可以澄清一下吗?这是我应该关注的警告信息吗?

感谢。

有帮助吗?

解决方案

您的代码应该可以正常工作,但如果传递的字符串中有任何'%'格式字符可能会出错 - 这可能会混淆NSLog。例如,尝试将其交换到您的代码中:

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

NSLog会以错误的方式解释'%f'。

您可以通过使用带有格式的字符串文字并传入字符串来避免警告(和危险),如下所示:

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

您也可以查看以下链接:

http://www.cocoabuilder.com/archive /消息/可可/ 2009/8 /二十四万三千八百十九分之二十九

祝你好运!

其他提示

如果你想将输出写入nslog,你需要这样的东西:

NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top