Jea*_*ean 1 objective-c compiler-warnings ios
我正在编写一个iOS应用程序,我已经在Constants文件中声明了一个字符串常量:
NSString * const kHeader = @"name,age,gender";
Run Code Online (Sandbox Code Playgroud)
在Constants.h中
FOUNDATION_EXPORT NSString * const kHeader;
Run Code Online (Sandbox Code Playgroud)
并尝试将此字符串写入ViewController类中的NSOutput流,如下所示:
[outputStream写:[kHeader UTF8String] maxLength:[kHeader length]];
这显示了一个编译器警告:将 'const char*'发送到'const uint8_t*'类型的参数(又名'const unsigned char*')在指向不同符号的整数类型的指针之间进行转换
这是什么意思?我该如何解决这个问题?请帮忙.Googl'ing没有产生太多有用的结果.
除了签名/无符号指针警告之外,您的代码实际上可能是错误的.
[kHeader length]返回字符串中的Unicode字符数,这可能与返回的UTF-8字节数不同[kHeader UTF8String].
例如,@"€"有一个Unicode字符,但有3个UTF-8字节.
所以你应该替换它
const char *utf8string = [kHeader UTF8String];
[outputStream write:(const uint8_t *)utf8string maxLength:strlen(utf8string)];
Run Code Online (Sandbox Code Playgroud)
或者
NSData *data = [kHeader dataUsingEncoding:NSUTF8StringEncoding];
[outputStream write:[data bytes] maxLength:[data length]];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3630 次 |
| 最近记录: |