iOS:应用程序在尝试关闭流时挂起
iOS: App is hanging when trying to close the stream
我创建了 NSStreams
以使用以下代码传输内容:
dispatch_async(dispatch_get_main_queue(), ^{
// open input
[self.inputStream setDelegate:controller];
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.inputStream open];
// open output
[self.outputStream setDelegate:controller];
[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.outputStream open];
});
有时,我想使用以下代码关闭流:
// Shut down input
[self.inputStream close];
self.inputStream = nil;
// Shut down output
[self.outputStream close];
self.outputStream = nil;
NSLog(@"input streams status:%i", [self.inputStream streamStatus]);
NSLog(@"output streams status:%i", [self.outputStream streamStatus]);
NSLog(@"input streams status:%@", [self.inputStream streamError]);
NSLog(@"output streams status:%@", [self.outputStream streamError]);
所有 input/output 流都是强大的属性。
流状态 return 为零,但我的应用挂起。当我将设备置于调试模式时,监视器显示我的设备 CPU 在调用关闭方法后以 98+% 启动 运行。好像在等待什么结束,但我还是不知道那是什么。
有谁知道可能导致此问题的原因吗?
尝试从 运行 循环中删除流。
// Shut down input
[self.inputStream close];
[self.inputStream removeFromRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode];
self.inputStream = nil;
// Shut down output
[self.outputStream close];
[self.outputStream removeFromRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode];
self.outputStream = nil;
可以找到更多信息 here。
我创建了 NSStreams
以使用以下代码传输内容:
dispatch_async(dispatch_get_main_queue(), ^{
// open input
[self.inputStream setDelegate:controller];
[self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.inputStream open];
// open output
[self.outputStream setDelegate:controller];
[self.outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[self.outputStream open];
});
有时,我想使用以下代码关闭流:
// Shut down input
[self.inputStream close];
self.inputStream = nil;
// Shut down output
[self.outputStream close];
self.outputStream = nil;
NSLog(@"input streams status:%i", [self.inputStream streamStatus]);
NSLog(@"output streams status:%i", [self.outputStream streamStatus]);
NSLog(@"input streams status:%@", [self.inputStream streamError]);
NSLog(@"output streams status:%@", [self.outputStream streamError]);
所有 input/output 流都是强大的属性。
流状态 return 为零,但我的应用挂起。当我将设备置于调试模式时,监视器显示我的设备 CPU 在调用关闭方法后以 98+% 启动 运行。好像在等待什么结束,但我还是不知道那是什么。
有谁知道可能导致此问题的原因吗?
尝试从 运行 循环中删除流。
// Shut down input
[self.inputStream close];
[self.inputStream removeFromRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode];
self.inputStream = nil;
// Shut down output
[self.outputStream close];
[self.outputStream removeFromRunLoop: [NSRunLoop currentRunLoop] forMode: NSDefaultRunLoopMode];
self.outputStream = nil;
可以找到更多信息 here。