我面對下面錯誤:
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中運行項目我遇到了上述錯誤。請幫助我 –