objective-c - 如何在 Objective-C 中保持输出流打开?

标签 objective-c ios cocoa stream

我正在将数据写入事件内的流:

- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode

如下(摘自苹果文档):

case NSStreamEventHasSpaceAvailable:
    uint8_t *readBytes = (uint8_t *)[self.outData mutableBytes];            
    readBytes += byteIndex;            
    int dataLength = [self.outData length];            
    unsigned int length = ((dataLength - byteIndex >= 1024) ? 1024 : (dataLength - byteIndex));            
    uint8_t buffer[length];            
    (void)memcpy(buffer, readBytes, length);            
    length = [self.outputStream write:(const uint8_t *)buffer maxLength:length];            
    byteIndex += length;            
    break;

但是,当输出流中没有其他内容可写入时,会调用事件 NSStreamEventEndEncountered,因此输出流将被丢弃。我怎样才能保持这个流打开以供写入?根据Apple's documentation该事件被正确调用,因为没有任何内容写入输出流。有什么想法吗?

最佳答案

您是否已将流放入运行循环中? 请参阅此处的示例:http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server

关于objective-c - 如何在 Objective-C 中保持输出流打开?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11481077/

相关文章:

objective-c - xcode 在同一窗口中打开 "click here to view symbol declaration"

ios - 为什么我无法在我的 AppDelegate 中以编程方式更改我的初始 View Controller ?

ios - UITabBar 宽度不随屏幕尺寸增加

iphone - iOS XML 编写器类

ios - 应用程序在选项卡栏之间的快速导航之间崩溃

ios - "CGLayer no longer recommended";这是普遍共识吗?

swift - Xcode 14 Xcode 13 不兼容

ios - 我可以在自定义 View 中直接将约束设置为 super View 吗?

ios - 如何使用 URLSeassion 显示下载进度

objective-c - Mac OS X 的 Cocoa 编程(第 3 版)已经过时了吗?