我被触发了这个问题,因为我在这个答案的 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,我想确定..