Я читаю данные из NSFileHandle (из NSPipe) с помощью блока readabilityHandler:
fileHandle.readabilityHandler = ^( NSFileHandle *handle ) {
[self processData: [handle availableData]];
}
Это отлично работает, я получаю все данные, которые, как я ожидаю, передал моему методу processData. Проблема в том, что мне нужно знать, когда был прочитан последний фрагмент данных. availableData должен возвращать пустой экземпляр NSData, если он достиг конца файла, но проблема в том, что обработчик достижимости снова не вызывается на EOF.
Я не могу найти что-либо о том, как получить какое-то уведомление или обратный вызов в EOF. Так что я пропущу? Является ли Apple действительно асинхронным API чтения без обратного вызова EOF?
Кстати, я не могу использовать метод readInBackgroundAndNotify на основе runloop, так как у меня нет доступной runloop. Если я не могу заставить это работать с API NSFileHandle, я, вероятно, буду напрямую использовать источник отправки для ввода IO.