我面临以下错误:
format string is not a string literal (potentially insecure) [-Wformat-security]
我的代码是:
appDelegate.reportString = [NSString stringWithFormat:queryString];
由于您似乎不想格式化字符串(即没有与格式字符串一起使用的参数)而只是复制它,因此更好的使用方法是[NSString stringWithString:]
appDelegate.reportString = [NSString stringWithString:queryString];
如果queryString
是不可变字符串而不是NSMutableString
,则无需复制它,只需使用;
appDelegate.reportString = queryString;
结果相同。
问题是“ stringWithFormat
”更喜欢编译时字符串文字,例如:
appDelegate.reportString = [NSString stringWithFormat: @"this is a series of numbers %@", @"123456"];
而在您的情况下,编译器看到的只是一个变量(“ queryString
”),没有别的。
如果 queryString 没有改变,为什么不这样做:
appDelegate.reportString = queryString;
这会增加 queryString 的保留计数。或者你可以做“ [[NSString alloc] initWithString: queryString]
”或“ [queryString copy]
”来创建一个全新的保留副本。
当然,约阿希姆的回答也很好。给他+1!