我正在使用块从 a NSFileHandle
(来自 a )读取数据:NSPipe
readabilityHandler
fileHandle.readabilityHandler = ^( NSFileHandle *handle ) {
[self processData: [handle availableData]];
}
这很好用,我得到了我期望提供给我的processData
方法的所有数据。问题是我需要知道读取最后一块数据的时间。availableData
如果它到达文件末尾,则应该返回一个空NSData
实例,但问题是在 EOF 上不会再次调用可达性处理程序。
我找不到任何关于如何在 EOF 上获得某种通知或回调的信息。那么我错过了什么?Apple 真的提供了没有 EOF 回调的异步读取 API 吗?
顺便说一句,我不能使用基于 runloop 的readInBackgroundAndNotify
方法,因为我没有可用的 runloop。如果我不能让它与NSFileHandle
API 一起工作,我可能会直接使用调度源来执行 IO。