gpt4 book ai didi

ios - UniChar(来自 CFString)和 unichar(来自 NSString)是一样的吗?

转载 作者:行者123 更新时间:2023-12-01 19:01:36 26 4
gpt4 key购买 nike

我被触发了这个问题,因为我在这个答案的 NSString 上使用了一个类别方法来计算特定字符的出现次数:

https://stackoverflow.com/a/15947190/472599

这个方法非常快,通过使用特殊的 CFString 方法来枚举字符串的内容。它需要一个 UniChar 作为参数。为了获得 UniChar,我使用了:

unichar semicolon = [@";" characterAtIndex: 0];

因为我在 NSString 中找不到任何给我 UniChar 的东西。

编译器不会提示这一点(通过 unichar 代替 UniChar

类型的定义是:
// in MacTypes.h
typedef UInt16 UniChar;
// and:
typedef unsigned short UInt16;

// in NSString.h:
typedef unsigned short unichar;

所以这些类型现在似乎是相同的(iOS 7.1)。但我们能期望这种情况永远如此吗?
看到 NSInteger 在移动到 64 位时从 int 变为 long,我想确定..

最佳答案

澄清一下:“UniChar”和“unichar”都不是 Unicode 字符。它们是 UTF-16 组件。就像单字节是 UTF-8 组件一样,UniChar 和 unichar 是 UTF-16 组件。单个 Unicode 字符由一到四个 UTF-8 组件或一到两个 UTF-16 组件组成。

对于 ASCII 字符,你可以写

unichar semicolon = ';';

关于ios - UniChar(来自 CFString)和 unichar(来自 NSString)是一样的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22455577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com