我维护的一个古老代码最初是这样的:
NSUInteger readUnicode(NSMutableString *string, signed char const * buf, signed long int offset, size_t bufsize)
{
NSUInteger initLength = [string length];
signed char const * start = buf + offset;
NSLog (@"--------> start: %S", start);
[string appendFormat:@"%S", start];
return [string length] - initLength;
}
XCode 抛出警告“格式指定类型 'const unsigned short *' 但参数的类型为 'const signed char *' 并建议将 appendFormat:@"%S" 更改为 appendFormat:@"%s"
当我确实将 %S 更改为 %s 时,无论输入如何,我都开始在返回字符串中只得到一个字符。
因此,我将代码更改为:
NSUInteger readUnicode(NSMutableString *string, signed char const * buf, signed long int offset, size_t bufsize)
{
NSUInteger initLength = [string length];
const unsigned short * start = (const unsigned short * )buf + offset;
NSLog (@"--------> start: %S", start);
[string appendFormat:@"%S", start];
return [string length] - initLength;
}
......现在我似乎得到了所有的角色并且没有警告。这是处理警告的方法吗?或者也许我可以/应该做点别的事情?(除了改变输入buf的类型)
谢谢你。