输入和输出流始终打开,并使用正确的NSStreamEvent代码(NSStreamEventOpenCompleted)调用相应的委托方法.但是,在某些openSession尝试流成功打开但它们不起作用.有时我只能写入输出流,但我无法从输入流中读取.有时我不会读或写.
有没有人遇到过这个问题或者想知道为什么会这样?任何帮助表示赞赏.谢谢.
这是一些相关的代码
- (BOOL)openSession
{
_session = [[EASession alloc] initWithAccessory:_selectedAccessory
forProtocol:_protocolString];
if (!_session)
return false;
[_selectedAccessory setDelegate:self];
[[_session inputStream] setDelegate:self];
[[_session outputStream] setDelegate:self];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ {
[[_session inputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[[_session inputStream] open];
[[_session outputStream] scheduleInRunLoop:[NSRunLoop currentRunLoop]
forMode:NSDefaultRunLoopMode];
[[_session outputStream] open];
[[NSRunLoop currentRunLoop] run];
});
return true;
}
- (void)setupControllerForAccessory:(EAAccessory *)accessory withProtocolString:(NSString *)protocolString
{
_selectedAccessory = accessory;
_protocolString = [protocolString copy];
}
/**
* There is something weird happening here too, this always get called twice when …Run Code Online (Sandbox Code Playgroud)