作者Blueshiva (龍野南雲)
看板MacDev
標題Re: [心得] 拚字串會出現 warning的警告
時間Sat Jul 28 14:36:15 2012
※ 引述《Adonisy (堂本瓜一)》之銘言:
: 更新到新的 xcode 4.4 這個警告還是出現了
:
: 舊寫法:
:
: tempstr= [[tempstr stringByAppendingFormat:
: [self returnSpace:4-[segmentedControl titleForSegmentAtIndex:1].length]]
: stringByAppendingFormat:[segMenuitemText objectAtIndex:0]];
:
: (x)
:
: 新寫法
:
: tempstr=[NSString stringWithFormat:@"%@%@",
: [self returnSpace:4-[segmentedControl titleForSegmentAtIndex:1].length],
: [segMenuitemText objectAtIndex:0]];
:
: (O)
:
: --
: 昔日所為 今日所受
: 今日所為 明日所受
:
:
: --
: → appleway:warning 內容是? 07/28 01:00
: → Adonisy:大概就是說不安全之類的 07/28 01:03
不安全的原因是
NSString *evilFormat = @"%@";
NSString *brokenString = [@"Oops..." stringByAppendingFormat:evilFormat];
如果你指定的format字串是個變數,因為無法控制這變數裡面是什麼,如果有人塞個
format token,那麼程式在跑的時候就會往後去找要填入的變數,就很有可能造成變
數填到不該去的地方,然後就爆炸了...
其實 NSLog() 也是一樣,以前都習慣直接 NSLog(aString),現在都改用
NSLog(@"%@", aString) 比較安全。
--
Luna quieres ser madre
y no encuentras querer
que te haga mujer
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.125.33
推 osnq:正解。 推一個~~~ 07/28 16:57
推 fantasy0404:推~ 07/29 00:02
推 aecho:推~ 07/29 15:56
推 iwayne:推.. 09/28 18:57