Cocoa touch -[NSInputStream读取:maxLength:]块吗?

Cocoa touch -[NSInputStream读取:maxLength:]块吗?,cocoa-touch,cocoa,blocking,nsinputstream,Cocoa Touch,Cocoa,Blocking,Nsinputstream,我似乎在任何地方都找不到这个问题的答案,但是在数据可用或出现错误之前,是否在NSInputStream上执行read:maxLength:块,或者在尝试读取之前是否需要轮询hasBytesAvailable?是,read:maxLength:块,直到至少有一个字节可用,或者如果发生错误或流达到EOS。它也将阻塞,直到流被打开 您是否想要轮询,是否对阻塞很满意,或者是否想要实现流委托,这取决于您自己。建议使用流代理。对于我来说,在tcp流上使用时,它会无限期地阻塞。具体地说,在确保所有流操作(如打

我似乎在任何地方都找不到这个问题的答案,但是在数据可用或出现错误之前,是否在
NSInputStream上执行
read:maxLength:
块,或者在尝试读取之前是否需要轮询
hasBytesAvailable
?是,
read:maxLength:
块,直到至少有一个字节可用,或者如果发生错误或流达到EOS。它也将阻塞,直到流被打开


您是否想要轮询,是否对阻塞很满意,或者是否想要实现流委托,这取决于您自己。建议使用流代理。

对于我来说,在tcp流上使用时,它会无限期地阻塞。具体地说,在确保所有流操作(如打开、关闭等)都在主线程上完成之后,我仍然看到读取的线程被永远阻塞,即使在发出streamclose并将其设置为nil之后也是如此。