Я читаю данные из 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.