苹果的文件指出
字符串对象实现为 Unicode 字符数组
但是,unichar很可能在unsigned short幕后的数据类型的大小只有 16 位,这使得无法用unichar. 我如何在脑海中调和这两个事实?
苹果的文件指出
字符串对象实现为 Unicode 字符数组
但是,unichar很可能在unsigned short幕后的数据类型的大小只有 16 位,这使得无法用unichar. 我如何在脑海中调和这两个事实?
您是正确的,Apple 的文档在真正表示 UTF-16 代码点时错误地引用了 Unicode 字符。
在 Unicode 的早期,人们希望它不会超过 16 位,但它确实做到了。Apple 和 Microsoft(可能还有其他公司)都使用 16 位整数来表示“Unicode 字符”,即使某些字符必须由代理对表示。
处理这种情况的各种方法NSString(加上组合字符)并返回给定字符的范围。例如-rangeOfCharacterFromSet:...和-rangeOfComposedCharacterSequences...。
unichar数据类型表示。“字符串对象被实现为 Unicode 字符数组”并不意味着它在源代码中存储为unichar *. 你不知道它是如何实现的,是吗?unichar不是无符号短线怎么办?如果它是 32 位或 64 位数据类型怎么办?