Iphone 如何同步调用NSStream
如何同步调用NSStream以获得结果 目前,我在它的一个委托方法中得到了一个异步回调Iphone 如何同步调用NSStream,iphone,objective-c,asynchronous,ftp,nsstream,Iphone,Objective C,Asynchronous,Ftp,Nsstream,如何同步调用NSStream以获得结果 目前,我在它的一个委托方法中得到了一个异步回调 `(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`- NSStream是一个抽象类,既不向流读取数据,也不向流写入数据。要实际访问数据,您需要一个具体的子类,如NSInputStream或NSOutputStream(或nstream的自定义子类)。要读取NSInputStream中的数据,请调用read
`(void)stream:(NSStream *)theStream handleEvent:(NSStreamEvent)streamEvent`-
NSStream
是一个抽象类,既不向流读取数据,也不向流写入数据。要实际访问数据,您需要一个具体的子类,如NSInputStream
或NSOutputStream
(或nstream
的自定义子类)。要读取NSInputStream
中的数据,请调用read:maxLength:
。您可能希望使用hasBytesAvailable
轮询流,询问它是否有任何新数据可用。NSOutputStream具有类似的write:maxLength:
和hasSpaceAvailable
方法
iOS文档强烈建议您避免轮询,而是通过响应异步回调委托方法来使用运行循环调度。为什么要同步获取流数据?如果在单独的线程中运行,则无需轮询。您可以只读取输入流,它将阻塞,直到有数据可用/流关闭/发生错误。响应模拟posix行为,其中0表示流已关闭,-1表示发生错误。正数表示从流中读取的实际字节数。