Ios 不兼容的指针类型';uint8&x27;发送至';uint8**';-怎么能修好呢?

Ios 不兼容的指针类型';uint8&x27;发送至';uint8**';-怎么能修好呢?,ios,objective-c,buffer,nsstream,nsinputstream,Ios,Objective C,Buffer,Nsstream,Nsinputstream,我得到了警告 不兼容的端口类型“uint8\u t*”发送到“uint8\u t**” 将值传递给NSStream类中下面方法中的参数“buffer”时 - (BOOL)getBuffer:(uint8_t **)buffer length:(NSUInteger *)len; 下面是我正在使用的代码“文件流”是“NSInputStream”即时对象 uint8_t oneByte; [fileStream read: &oneByte maxLength: 1]; NSUIn

我得到了警告

不兼容的端口类型“uint8\u t*”发送到“uint8\u t**”

将值传递给NSStream类中下面方法中的参数“buffer”时

- (BOOL)getBuffer:(uint8_t **)buffer length:(NSUInteger *)len;
下面是我正在使用的代码“文件流”是“NSInputStream”即时对象

    uint8_t oneByte;
[fileStream read: &oneByte maxLength: 1];
NSUInteger* remaining = 0;
[fileStream getBuffer: &oneByte length:remaining];

从签名中可以看出,该方法不希望您为缓冲区分配空间或传递长度:它将返回指向现有缓冲区的指针,并将该缓冲区的长度设置为您传递的
nsuiger
指针,如下所示:

uint8_t *buf;
NSUInteger len;
[fileStream getBuffer:&buf length:&len];

已尝试
uint8\u t*1字节?:)在以下方法中使用*单字节操作时失败-(NSInteger)read:(uint8_t*)buffer maxLength:(NSInteger)len。我的代码uint8\u t*oneByte=NULL;[文件流读取:一字节最大长度:1];(现在使用&oneByte会发出警告。因此使用了oneByte)在使用*oneByte操作时,以下方法失败-(NSInteger)read:(uint8\u t*)buffer maxLength:(NSUInteger)len My code uint8\u t*oneByte=NULL;[文件流读取:一字节最大长度:1];(现在使用&oneByte发出警告。因此使用oneByte)@AfsalMeerakutty
read:maxLength:
方法的签名与
getBuffer:length:
不同。您不应该在这两个调用中使用相同的参数-第一个调用需要您分配一个缓冲区,而第二个调用会将缓冲区返回给您。谢谢dasblinkenlight。我误解了读取方法获取已读取的缓冲区长度的方法。在读取流的一部分后,如何从流中获取剩余数据?我想知道这一点,因为在阅读了我文本中的第112行之后,NSInputsRealm中当前可用的-(BOOL)hasbytes将返回falsefile@AfsalM最常见的方法是在循环中调用
read:maxLength:
方法,直到它返回零。因为这是一个文件流,所以当没有可用数据时它不会阻塞(这对于套接字流更有用)。