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