我開始同步我的ASIHTTPrequest在這樣一個單獨的線程:能在ASIHTTPRequest/AFNetworking後臺線程上執行一個completionBlock嗎?
//inside this start method I create my ASIHTTPRequest and start it
dispatch_async(dispatch_get_global_queue(0, 0), ^{
[process start];
});
但completionBlock仍然打響了主線程上。 是否可以將completionBlock的執行保存在與請求開始時相同的線程中?
我可以想出解決這個問題的唯一方法是定義一個調度隊列,並在同一個線程中手動執行completionBlock,從而持有對創建隊列的引用。但是這並沒有直接解決它,因爲在將其餘代碼重定向到創建的分派隊列之前,您會在主線程中傳遞一個令人擔憂的時刻。
有人有更好的解決方案嗎?
編輯:同樣也是AFNetworking完成塊真的......
你介意發表一個這樣的例子嗎?我正在爲同樣的事情苦苦掙扎,但我沒有足夠的精通Obj-C來理解如何在沒有示例的情況下實現您的解決方案。謝謝! – Julian 2012-04-18 21:53:41
剛剛更新了一個例子的答案,希望這有助於!另外請確保在不再需要時釋放requestQueue,因此最好創建一個實例變量並使用dispatch_release(requestQueue)釋放它; – Yannick 2012-04-20 06:38:16
似乎AFHTTPRequestOperation不再具有這些屬性...認爲它現在是「completionQueue」 – shim 2015-10-20 22:16:59