我們的代碼調用stringWithUTF8String
,但我們有一些數據在字符串中使用了一個octal
序列\ 340。這會導致一些代碼中斷,因爲我們從不期望函數返回nil
。我做了一些研究,發現來自\ 200- \ 777的任何八進制序列都會得到相同的結果。我知道我可以處理這個返回nil
,但我想明白爲什麼它會返回nil
,以及那些八進制轉義解釋爲什麼。iOS某些八進制轉義序列導致nil for stringWithUTF8String
NSString *result = [NSString stringWithUTF8String:"Mfile \340 xyz.jpg"];
運行此代碼返回nil
結果。看起來,爲了防守地編碼,我們必須在我們使用它的任何地方檢查空結果,這似乎是不幸的。該函數的文檔沒有提到任何有關返回nil的可能性。我敢打賭,那裏有很多代碼不會檢查它。
我跑這個,它似乎提出'而不是'\ 140'標記而不是'nil'字符串。 – 2011-06-16 07:12:03
對不起剪切和粘貼錯誤,我正在玩其他值。修復應該是\ 340不是\ 140 – possen 2011-06-16 16:25:19
添加了一個答案。看一看。 – 2011-06-16 16:36:48