11
我使用的是readabilityHandler
塊讀取從NSFileHandle
(從NSPipe
)數據:如何使用NSFileHandle的readabilityHandler檢查文件結束?
fileHandle.readabilityHandler = ^(NSFileHandle *handle) {
[self processData: [handle availableData]];
}
這工作得很好,我得到的所有我預計美聯儲將我processData
方法的數據。問題是我需要知道什麼時候讀取了最後一塊數據。 availableData
應該返回一個空的NSData
實例,如果它到達文件結尾,但問題在於EOF上沒有再次調用可達性處理程序。
我找不到任何關於如何獲得EOF的某種通知或回調。那麼我錯過了什麼?蘋果真的提供了一個沒有EOF回調的異步閱讀API嗎?
順便說一句,我不能使用基於readInBackgroundAndNotify
方法的runloop方法,因爲我沒有可用的runloop。如果我不能使用這個API來處理NSFileHandle
API,我可能會直接使用調度源來執行IO。
你確定所有的寫管道的兩端已被關閉?關於運行循環,所有線程都會根據需要創建一個運行循環,您可以自己運行一個循環。 – 2013-04-06 14:20:33
是的,管道已正確關閉。我做了一些更多的嘗試,其他種類的'NSFileHandle'實例也會發生同樣的情況。從標準輸入或常規文件讀取時,EOF也沒有通知。 – Sven 2013-04-06 14:55:01