当给定包含中文字符的wchar_t数组时,NSString initWithBytes返回nil

时间:2013-08-13 20:35:44

标签: c++ ios objective-c nsstring wchar-t

我的iOS应用程序中有一个基于wchar_t数组的自定义C ++字符串类。我有一种方法将其转换为NSString,如下所示:

NSString *str = [[[NSString alloc]initWithBytes:(const void *)mArray
      length:sizeof(wchar_t) * mLength 
      encoding:NSUTF32LittleEndianStringEncoding]autorelease];
return str;

我有一个输入字符串包含一些中文字符(特别是新译本)的情况,initWithBytes返回nil。 documentation中没有关于返回nil的方法的内容;这是错误的条件吗?有谁知道什么样的东西可能会让这个方法没有结果?

1 个答案:

答案 0 :(得分:0)

事实证明,传入的wchar数组有时会包含UTF-16字符,UTF-16会以不同方式编码多字节字符。如果initWithBytes获取无效数据,则会返回nil