第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

警告:“不格式化字符串文字,不格式化參數(shù)”

警告:“不格式化字符串文字,不格式化參數(shù)”

慕田峪9158850 2019-11-26 15:32:06
自升級(jí)到最新的Xcode 3.2.1和Snow Leopard以來,我一直收到警告“不格式化字符串文字,不格式化參數(shù)”從以下代碼中:NSError *error = nil;if (![self.managedObjectContext save:&error]) {    NSLog([NSString stringWithFormat:@"%@ %@, %@",        errorMsgFormat,        error,        [error userInfo]]);      }如果errorMsgFormat是NSString帶有格式說明符(例如"print me like this: %@":),那么上述NSLog調(diào)用有什么問題?推薦的解決方法是什么,以便不生成警告?
查看完整描述

3 回答

?
小怪獸愛吃肉

TA貢獻(xiàn)1852條經(jīng)驗(yàn) 獲得超1個(gè)贊

您是否正確嵌套了括號(hào)?我不NSLog()喜歡只接受一個(gè)論點(diǎn),這就是您要通過的論點(diǎn)。另外,它已經(jīng)為您完成了格式化。為什么不這樣做呢?


NSLog(@"%@ %@, %@", 

   errorMsgFormat, 

   error, 

   [error userInfo]);              

或者,由于您說的errorMsgFormat是帶有單個(gè)占位符的格式字符串,您是否要這樣做?


NSLog(@"%@, %@", [NSString stringWithFormat:errorMsgFormat, error], 

   [error userInfo]);              


查看完整回答
反對(duì) 回復(fù) 2019-11-26
?
阿晨1998

TA貢獻(xiàn)2037條經(jīng)驗(yàn) 獲得超6個(gè)贊

Xcode抱怨,因?yàn)檫@是一個(gè)安全問題。


這是與您相似的代碼:


NSString *nameFormat = @"%@ %@";

NSString *firstName = @"Jon";

NSString *lastName = @"Hess %@";

NSString *name = [NSString stringWithFormat:nameFormat, firstName, lastName];

NSLog(name);

最后的NSLog語句將執(zhí)行以下操作:


NSLog(@"Jon Hess %@");

這將導(dǎo)致NSLog尋找另外一個(gè)字符串參數(shù),但是沒有一個(gè)。由于C語言的工作方式,它將從堆棧中獲取一些隨機(jī)垃圾指針,并嘗試將其視為NSString。這很可能會(huì)使您的程序崩潰?,F(xiàn)在您的字符串中可能沒有%@,但是有一天它們可能會(huì)。您應(yīng)該始終將帶有明確控制的數(shù)據(jù)的格式字符串用作采用格式字符串的函數(shù)的第一個(gè)參數(shù)(printf,scanf,NSLog,-[NSString stringWithFormat:],...)。


正如Otto指出的那樣,您可能應(yīng)該做以下事情:


NSLog(errorMsgFormat, error, [error userInfo]);


查看完整回答
反對(duì) 回復(fù) 2019-11-26
?
慕仙森

TA貢獻(xiàn)1827條經(jīng)驗(yàn) 獲得超8個(gè)贊

最終答案:正如喬恩·赫斯(Jon Hess)所說,這是一個(gè)安全問題,因?yàn)槟獙HATEVER字符串傳遞給需要格式字符串的函數(shù)。也就是說,它將評(píng)估任何字符串內(nèi)的所有格式說明符。如果沒有,那太棒了,但是如果有,那么可能會(huì)發(fā)生壞事。


那么,正確的做法是直接使用格式字符串,例如


NSLog(@"%@", myNSString);

這樣,即使myNSString中有格式說明符,它們也不會(huì)被NSLog評(píng)估。

查看完整回答
反對(duì) 回復(fù) 2019-11-26
  • 3 回答
  • 0 關(guān)注
  • 718 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)