从 OS X 10.7 和 iOS 5.0 开始,NSFileHandle 有两个新属性:readabilityHandler 和 writeabilityHandler。我尝试使用 writeabilityHandler,但没有运气。文档很奇怪,看起来他们复制粘贴了 readabilityHandler 的描述,并将单词read替换为write。
根据分配块的文档,最终应该调用该块。它不是。
- (void)sendResponse:(NSData*)dataToSend
{
_incomingHandle.writeabilityHandler =
^(NSFileHandle* fileHandle)
{
[fileHandle writeData:dataToSend]; // exception is thrown here
fileHandle.writeabilityHandler = nil;
};
// Above block is not called without this line:
//[_incomingHandle writeData:dataToSend];
}
只有当我尝试同步写入句柄时才会调用它,[_incomingHandle writeData:dataToSend]
这没有意义。调用后会抛出异常:EXC_BAD_INSTRUCTION
*** Terminating app due to uncaught exception 'NSFileHandleOperationException', reason:
'*** -[NSConcreteFileHandle writeData:]: Resource temporarily unavailable'
我也尝试过逐个发送数据。没运气。
有没有人成功使用过这个属性?