Objective c 目标C警告

Objective c 目标C警告,objective-c,warnings,Objective C,Warnings,我是objective-c的新手,很难理解以下代码块的警告消息: void PrintPathInfo() { NSString *path = @"~"; NSString *message = @"My home folder is: "; NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]); } 这是我在最后一行收到的警告消息(调用NSLog): 有人能澄

我是objective-c的新手,很难理解以下代码块的警告消息:

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

    NSLog([message stringByAppendingString: [path stringByExpandingTildeInPath]]);
}
这是我在最后一行收到的警告消息(调用NSLog):

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


谢谢。

如果您想将输出写入nslog,您需要以下内容:

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

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

NSString *message = @"My home %folder is: ";
NSLog将以错误的方式解释“%f”

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

NSLog(@"My home folder is %@",[path stringByExpandingTildeInPath]);
NSLog(@"%@%@", message, [path stringByExpandingTildeInPath]);
您也可以检查此链接:

祝你好运