gpt4 book ai didi

objective-c - 从文件读取内容时,NSInputStream 不会发生 NSStreamEventEndEncountered

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:18:49 26 4
gpt4 key购买 nike

我创建了一个 NSInputStream 来从文件(IOS)加载内容:

NSString* fileName = [[NSBundle mainBundle] pathForResource:@"resource" ofType:@".dat"];
NSInputStream* dataStream = [NSInputStream inputStreamWithFileAtPath:fileName];
if (dataStream == nil) {
NSLog(@"load asset failed");
return;
}

[dataStream setDelegate:self];
[dataStream scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[dataStream open];

然后,添加事件处理程序:

- (void)stream:(NSStream *)stream handleEvent:(NSStreamEvent)eventCode {
switch(eventCode) {
case NSStreamEventEndEncountered: {
[stream removeFromRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];

break;
}
}
}

我想捕捉事件:NSStreamEventEndEncountered,但没有发生。我只能捕获 NSStreamEventOpenCompleted 和 NSStreamEventHasBytesAvailable。

有什么问题吗?感谢您的帮助!

最佳答案

我看不出您发布的代码有任何问题。确保当你完成你自己关闭的流而不是简单地依赖于获得一个 NSStreamEventEndEncountered 通知,你可以简单地用这样的东西来做:

- (void) disconnect {
// Close all open streams
[inputStream close];
[outputStream close];
}

如果连接被流的另一端关闭,您通常只会得到 NSStreamEventEndEncountered,这取决于您正在做的事情,这可能超出您的控制范围。

关于objective-c - 从文件读取内容时,NSInputStream 不会发生 NSStreamEventEndEncountered,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6437571/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com