iOS開發-常見錯誤和警告總結

來源:互聯網
上載者:User

標籤:

NSString是大家最常用的一個類,幾乎人人都脫離不開,它的功能非常強大,但是它其中有點奧秘直到碰到了才發現。

本文:
NSString的API中有一個rangeOfString:,這個也是大家常用的在字串中尋找的的Api。我一般圖省事,都是用這個,很少用rangeOfString:option:


正是因為偷懶,才導致了我一個crash,真是記憶深刻。
下面,我先舉一個例子:


明明有一個":",結果就是找不到.這樣導致了我以後代碼出現的crash。這次不是說這個crash,而是要找到原因,為啥這個":",找不到呢。


列印一下length,竟然是2。那為啥找不到呢.換一種方式:


找到了!!!!!
問題解決了,但是為啥會這樣呢?

這個就得看看Unicode的構成了。
Unicode對於組成有兩種形式:合成形式與分解形式。
而NSString的rangeOfString,這個api對此的支援是這樣的。rangeOfString,預設不是按照碼元來尋找的,也就是不是按照literalSearch.雖然它裡麵包含":",但是,這兩個字元可以合成另一個與其等價的字元,所以就找不到了。

合成字元有的在Unicode字元表中有對應的形式,有的沒有。我舉得例子就沒有。這得根據各種字元的具體規則定義,比如字元+西裡爾字母,就能組出很多種奇怪的字元。

提醒:
如果要在NSString尋找字元,一定要帶上option。因為NSString與Unicode還是有很多坑的。

 

iOS開發-常見錯誤和警告總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.