我需要編寫一個方法來完成一些異步的東西(HTTP GET請求),並在完成時調用一些以回調形式提供的方法。有關使用回調創建方法的最佳做法
在Objective-C中做這些事情的適當方法是什麼?我是否應該爲成功和錯誤處理提供一個完成回調,還是應該將它們作爲單獨的參數傳遞?
另外,我應該如何命名這種方法?這裏的最佳實踐是什麼?
我需要編寫一個方法來完成一些異步的東西(HTTP GET請求),並在完成時調用一些以回調形式提供的方法。有關使用回調創建方法的最佳做法
在Objective-C中做這些事情的適當方法是什麼?我是否應該爲成功和錯誤處理提供一個完成回調,還是應該將它們作爲單獨的參數傳遞?
另外,我應該如何命名這種方法?這裏的最佳實踐是什麼?
設置委託並在異步過程完成時在委託中調用完成方法是一種方法。
在過去的幾年中,蘋果和更大的iOS/Mac社區一直在擺脫這種設計模式。相反,你更有可能找到一個採用完成塊的方法。該完成塊可能具有成功參數,數據參數和錯誤參數。
查看現在不推薦使用的NSURLConnection類中的sendAsynchronousRequest:queue:completionHandler:
方法或NSURLSession中最近使用的dataTaskWithURL:completionHandler:
方法。兩者都有一個完成處理程序,當異步請求完成處理時會被調用。
我改變了我的習慣,更有可能在新設計中使用完成塊而不是代理和回調。
我不認爲這是任何人都從協議委託模式轉移的情況。這完全取決於兩個物體之間的關係。一如既往,爲工作使用正確的工具。 – nhgrif
通常您可以使用任一種方法。在塊存在之前,你(顯然)不能使用它們。現在,它們是一種選擇,在可以使用的情況下,塊有一些優點。當然,仍然有代理模式是更好的解決方案的情況。 –
這是一個很好的話題,但可能對[programmers.se]更好。 – rickster