Как использовать NSFileHandle's writeabilityHandler?

Начиная с 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'

Я также пытался посылать данные по частям. Не повезло.

Кто-нибудь успешно использовал это свойство?

6
задан Davyd Geyl 26 October 2011 в 02:14
поделиться