希望這些問題對於那些人來說似乎很有幫助。我一直在學習客觀的c,mostly from this book,我發現即使對於noob,它也是令人驚歎和有用的。我的問題都必須處理這個問題:盛大的中央調度,操作隊列,異步,查看將會消失
當用戶改變視圖時,隊列會發生什麼?我似乎無法在任何地方找到很好的解釋。
根據我的理解,使用NSOperation及其隊列,你可以使用「取消」來取消它......但是如果你不想取消它呢?如果用戶選擇多個圖像上傳到服務器,並且用該訂單創建一個隊列,並且用戶切換到新的視圖控制器,該怎麼辦?這可能非常耗時,尤其是在移動網絡速度較慢的情況下。我記得有些地方iOS會給我們20秒左右的額外時間來完成它的工作,但我認爲這只是在應用程序進入後臺時。
對於GCD,沒有取消方法......所以如果使用異步,後臺會發生什麼?我想如果你沒有對隊列的響應,我的意思是你不以任何方式更新UI,不應該在隊列完成後才發送到另一個線程?
我相信還有更多的東西我不明白,只要線程去,但我希望我明確提出了我的問題。請不要告訴我使用AFNetworking的東西...我嘗試使用所有那些鑰匙串包裝,並且都失敗了。感謝這本書,書中直接的Apple代碼完成了一切。在使用更簡單的方法之前,我寧願先學習基礎知識。
如果有人花時間討論這個問題,我會非常感激。提前致謝!
好吧,這很瞭解!感謝您的鏈接了。還有一個問題,哪個更好用?現在我對GCD很滿意,因爲它直接切換到主線程和分組任務。這只是個人喜好嗎? – denikov
@denikov GCD適合一次性任務。如果您有很多操作並且想限制可以同時運行多少個操作(使用'maxConcurrentOperationCount'),或者您需要對操作之間的依賴關係進行細粒度控制,則通常使用操作隊列。順便說一句,操作隊列最簡單的形式並不比GCD調度隊列更難(例如,而不是'dispatch_async(dispatchQueue,^ {...})'你會做'[operationQueue addOperationWithBlock:^ {...} GCD對於較低級別的任務是非常有用的,例如同步對象,定時器,信號等的訪問。 – Rob
個人而言,我對這些較低級別的任務使用GCD,但使用操作隊列來執行應用程序級別的任務(例如網絡請求,圖像處理等)。 – Rob