ブロックを使用してNSFileHandle
(から) からデータを読み取っています。NSPipe
readabilityHandler
fileHandle.readabilityHandler = ^( NSFileHandle *handle ) {
[self processData: [handle availableData]];
}
processData
これは正常に機能し、メソッドに供給されると予想されるすべてのデータを取得します。問題は、データの最後のチャンクがいつ読み取られたかを知る必要があることです。ファイルの終わりに達した場合availableData
は空のインスタンスを返す必要がありますが、問題は、EOF で到達可能性ハンドラーが再度呼び出されないことです。NSData
EOF で何らかの通知またはコールバックを取得する方法については何も見つかりません。それで、私は何が欠けていますか?Apple は本当に EOF コールバックなしで非同期読み取り API を提供していますか?
ちなみに、runloop が利用できないので、runloop ベースのreadInBackgroundAndNotify
方法は使用できません。これをNSFileHandle
API で動作させることができない場合は、おそらくディスパッチ ソースを直接使用して IO を実行します。