【问题标题】:When NSStream NSStreamEventHasSpaceAvailable event called?NSStream NSStreamEventHasSpaceAvailable 事件何时调用?
【发布时间】:2014-02-24 12:54:52
【问题描述】:

我无法真正理解这个事件。 我希望它在发送队列(或类似的内部结构)完成发送先前写入的数据包时被调用。

这是一个正确的假设吗?


我正在通过 Multipeer 连接开发视频流媒体,我想使用此属性来决定是否应该丢弃相机帧(如果没有 NSStreamEventHasSpaceAvailable),或者我可以将其提交给 NSOutputStream .

想象一下蓝牙连接,我真的需要丢掉很多相机帧,而不是把每一帧都提交给NSStream

【问题讨论】:

    标签: ios camera avcapturesession nsstream multipeer-connectivity


    【解决方案1】:

    NSStreamEventHasSpaceAvailable 事件表明您可以写入(至少一个字节!)到流中而不会阻塞。这并不意味着之前写入的数据完全 传递到连接的另一个端点。

    【讨论】:

    • 所以我不能“使用”它来解决蓝牙延迟问题,如果我是对的。
    • 那么 NSStream 体现了什么特性呢?为什么它比创建一个计时器并从内部定期发送一些数据更好?我真的无法理解这门课。
    • @Geri:如果内部缓冲区已满,写入流会阻塞当前线程。 NSStreamEventHasSpaceAvailable 告诉你什么时候可以写。
    • 这听起来和你在后台线程上不断轮询它一样。我真的不明白。
    • @Geri:您可以(同步)在后台线程上写入流。但是一个成功的写操作也仅仅意味着数据已经被写入内核缓冲区,而不是已经从另一个端点接收到。
    猜你喜欢
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 1970-01-01
    相关资源
    最近更新 更多