NSString

NSString 字符串

NSString 類和它的可變的子類 NSMutableString 提供了一些了API來處理字符串,包括合并、搜索、修改字符串方法。NSString 對象的使用貫穿整個 Foundation 框架和其他的 Cocoa 框架,作為文字和語言功能的基石服務于整個平臺。

Overview 概要

NSString 和它的 Core Foundation 里的搭檔 CFStringRef 可以自由轉換,查閱“Toll-Free Bridging” 了解更多信息。

String Objects 字符串對象

一個 NSString 對象用 Unicode 標準來編碼文本字符串,它被表示成一個 UTF–16 的代碼單元序列。所有的長度、字符索引、范圍在16位平臺以字節值表示,索引從0開始。

一個 NSString 對象可以與C語言緩存、NSData對象或者 NSURL 內容進行相互轉換。NSString對象也能編解碼為 ASCII, UTF–8, UTF–16, UTF–32 或者其他的任何被 NSStringEncoding 編碼表示的字符串。

Note

一個不可變的字符串是一個在創建的時候被定義的文本字符串,以后不能夠被改變。一個不可變的字符是被實現為一個以 UTF-16 為編碼單元的數組(換句話說,是一個文本字符串)。要創建和管理一個不可變字符串,使用 NSString 類。要創建和管理可變字符串,使用 NSMutableString?。

使用 NSString 和 NSMutableString 創建的對象被稱為字符串對象(或者在沒有歧義的情況下,直接稱為字符串)。術語 C 字符串被稱為標準的 char * 類型。由于類聚簇的原因,字符串對象并不是 NSString 和 NSMutableString 類的真正的實例,而是他們的私有子類的其中的一個實例。盡管一個字符串對象的類是私有的,但它的接口是公有的,這些接口被聲明在它們的抽象父類 NSString 和 NSMutableString 中。字符串類遵守了 NSCopying?和?NSMutableCopying?協議,使得我們能夠方便地將字符串從一種類型轉換成另一種類型。

對以 UTF-16 編碼的數據的理解

當從一個以 UTF-16 編碼的字符串來創建 NSString 對象時,如果字節順序沒有另作說明的話,NSString 假定 UTF-16 字符是高位編址(big-endian)編碼順序,除非有字節順序標記(byte-order mark,BOM),在這種情況下,BOM決定了編碼順序。當從一個 unichar 值的數組創建 NSString 對象時,返回的字符串總是 native-endian,因為以本地字節順序的話數組總是包含 UTF-16 代碼單元。

Subclassing Notes ?子類注意事項

有可能你會繼承 NSString(或者 NSMutableString),但是要做到這些你需要提供字符串(它沒有被子類繼承)的存儲設備并且實現兩個主要的方法。抽象類 NSString 和 NSMutableString 是類簇的公有接口,這個類簇包含了大多數的私有的具體的類,這些類創建并且返回一個適合給定情況的字符串對象。你自己實現這個簇的子類來滿足特定的需求(在這里有討論:Methods to Override)。

Understanding Characters ?對字符的理解

一個字符串對象以 UTF–16 代碼單元序列來展現自己。你可以通過 length 方法來獲取一個字符串包含多少 UTF–16 代碼單元,通過 characterAtIndex: 方法獲取指定的 UTF–16 代碼單元。這兩個“主要的”方法提供了對一個字符串對象的基本的訪問。

然而,使用字符串更多的情況是更高水平的,將字符串看作是單獨的實體:比較兩個字符串,查找子串,合并為新字符串,等等。如果你想一個一個字符訪問字符串,你必須理解 Unicode 字符編碼,特別是和字符序列組成相關的問題。更多詳情請參考?The Unicode Standard, Version 4.0(The Unicode Consortium, Boston: Addison-Wesley, 2003, ISBN 0-321-18578-1) and the Unicode Consortium web site:http://www.unicode.org/. See alsoCharacters and Grapheme ClustersinString Programming Guide.

本地化字符串比較基于排序規則算法(Unicode Collation Algorithm),和一個被通用區域數據倉庫(Common Locale Data Repository)量身定做的不同的語言。兩者都是統一編碼組織(Unicode Consortium)的項目。Unicode 是被 Unicode 公司注冊的商標。

原文鏈接:https://developer.apple.com/documentation/foundation/nsstring

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 在當前這個時代(比如說公元2016年),如果你并不是在維護歷史遺留的文本處理代碼,沒有在每個地方都使用Unicod...
    縱橫而樂閱讀 2,778評論 3 16
  • 轉載自ObjeC中國 歷史 計算機沒法直接處理文本,它只和數字打交道。為了在計算機里用數字表示文本,我們指定了一個...
    玉米包谷閱讀 1,240評論 0 4
  • 概述 NSString 及其可變子類 NSMutableString 提供了一組用于處理字符串的 API,包括用于...
    獨木舟的木閱讀 460評論 0 0
  • NSString的內容好豐富啊,學習了很久很久,也補充了不熟悉的內容。 算法了解 Hash算法: 將任意長度的消息...
    _阿南_閱讀 1,152評論 2 0
  • 離開學校已經有多久了,都已經忘了上課的感覺?,F在作為興趣課老師,來得幾乎總比學生早。大家的興趣好像也不穩定,這次很...
    citoyendumonde閱讀 193評論 0 0