簡體   English   中英

如何使用NSFileHandle的writeabilityHandler?

[英]How to use NSFileHandle's writeabilityHandler?

從OS X 10.7和iOS 5.0開始,NSFileHandle有兩個新屬性:readabilityHandler和writeabilityHandler。 我試過使用writeabilityHandler,但沒有運氣。 文檔很奇怪,它看起來像是readabilityHandler的復制粘貼描述,並用write替換了單詞read

根據文檔分配塊最終應該調用塊。 它不是。

- (void)sendResponse:(NSData*)dataToSend
{
    _incomingHandle.writeabilityHandler = 
    ^(NSFileHandle* fileHandle)
    {
        [fileHandle writeData:dataToSend]; // exception is thrown here
        fileHandle.writeabilityHandler = nil;
    };
    // Above block is not called without this line:
    //[_incomingHandle writeData:dataToSend];
}

只有當我嘗試同步寫入句柄[_incomingHandle writeData:dataToSend]它,這是沒有意義的。 調用它之后會拋出異常:EXC_BAD_INSTRUCTION

*** Terminating app due to uncaught exception 'NSFileHandleOperationException', reason:
'*** -[NSConcreteFileHandle writeData:]: Resource temporarily unavailable'

我也嘗試逐個發送數據。 沒運氣。

有沒有人成功使用過這家酒店?

嗯,你有一個我可以嘗試的示例項目嗎? 我沒有遇到任何問題,即使在做嵌套處理程序等愚蠢的事情時也是如此。 顯示它不起作用的測試用例可能有助於找出問題所在。

您可能遇到的一個問題是在NSFileHandle中使用dispatch_io將修改您傳入的任何fd的屬性。這可以說是NSFileHandle中的一個錯誤,但現在是正確的:/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM