题
我对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]);
不隶属于 StackOverflow