2016-09-21 31 views
0

我正在做一個代理類的事情,它應該通過NSURLSession提出請求,並逐步將其傳遞給GCDWebServer響應。如何同步獲取GCDWebServerBodyReaderCompletionBlock?

問題出在GCDWebServerStreamedResponse responseWithContentType:asyncStreamBlock - 它需要一個內容類型,因此必須在獲得標題後調用。由於某種原因,它會異步返回完成塊,而數據可能會更快地被接收。

我的意思是,現在它的工作原理是這樣的:

  1. API使得以GCDWebServer呼叫
  2. GCDWebServer創建NSURLSession數據任務
  3. 數據任務接收頭
  4. 創建GCDWebServerStreamedResponse
  5. 接收數據塊(我想推入流響應)
  6. 從st獲得完成塊ep 4

如何在步驟4之後立即獲得完成塊?

很抱歉,如果我錯過了任何信息,只是我堅持了下來,幾乎肯定,我做錯了什麼辦法...

回答

2

可以使用NSMutableData作爲中介緩衝:當數據到達從NSURLSession,追加到它,並且每當調用GCDWebServerAsyncStreamBlock時,返回該緩衝區並創建一個新的空的。

只要確保使用NSLock或GCD串行隊列鎖定對該緩衝區的訪問權限即可。

+0

我該怎麼做,沒有內容類型? – norlin

+0

我更新了我的答案。 – Pol

+0

是的,但它看起來像一個骯髒的黑客,至少我在這裏問完全是爲了避免這種方式... – norlin

相關問題