我面对下面错误:
format string is not a string literal (potentially insecure) [-Wformat-security]
我在Xcode 4.5工作,我跟踪的警告,这种“格式字符串不是字面(潜在不安全)的字符串”
和我代码是:
appDelegate.reportString = [NSString stringWithFormat:queryString];
我面对下面错误:
format string is not a string literal (potentially insecure) [-Wformat-security]
我在Xcode 4.5工作,我跟踪的警告,这种“格式字符串不是字面(潜在不安全)的字符串”
和我代码是:
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;
其中增加查询字符串保留计数。或者,您可以执行“[[NSString alloc] initWithString: queryString]
”或“[queryString copy]
”来创建全新的保留副本。
当然Joachim的答案也是很好的。 +1给他!
你想用这条线做什么?在这种情况下,只有'appDelegate.reportString = queryString'有什么问题? –
我只是从'queryString'复制到'appDelegate.reportString'字符串的组合,但我在xcode 4.5中运行项目我遇到了上述错误。请帮助我 –