【发布时间】:2014-12-04 02:59:51
【问题描述】:
我刚刚开始在 iOS 上进行套接字编程,我正在努力确定 NSStreamEventHasSpaceAvailable 事件对 NSOutputStreams 的使用。
一方面,Apple's official documentation (Listing 2) 表明,在-stream:handleEvent: 委托方法中,数据应该使用-write:maxLength: 消息写入输出缓冲区,每当收到NSStreamEventHasSpaceAvailable 事件时,从缓冲区不断传递数据.
另一方面,this tutorial from Ray Wenderlich 和 this iOS TCP socket example on GitHub 完全忽略了NSStreamEventHasSpaceAvailable 事件,只要他们需要,就继续前进,-write:maxLength: 到缓冲区(甚至忽略-hasSpaceAvailable)。
第三,this example code 似乎可以做到两者...
因此,我的问题是,将数据写入连接到套接字的NSOutputStream 的正确方法是什么?如果NSStreamEventHasSpaceAvailable 事件代码可以(显然)被忽略,那么它有什么用呢?在我看来,要么发生了非常幸运的 UB(在示例 2 和 3 中),要么有几种方法可以通过基于套接字的NSOutputStream...发送数据...
【问题讨论】:
标签: ios cocoa-touch sockets