Начиная с 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'
Я также пытался посылать данные по частям. Не повезло.
Кто-нибудь успешно использовал это свойство?