私が維持している古代のコードには、もともとこれがありました:
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 に変更すると、入力に関係なく、戻り文字列に 1 文字しか表示されなくなりました。
代わりに、コードを次のように変更しました。
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の型変更以外)
ありがとうございました。