[英]How to change delegate to NSURLSession
我正在使用NSURLSession
進行服務器通信。 我分別有2節課用於下載和上傳文件。 我想使用Single NSURLSession
進行下載和上傳操作。 在這種情況下,我無法在運行時使用setDelegate
選項更改NSURLSession
的委托,因為我正在使用委托來驗證數據。 有什么方法可以在運行時更改NSURLSession的委托對象嗎?
謝謝。
delegate
不能更改。 是“在創建此對象時分配的”委托。 隨着文檔的繼續說:
注意:
該
delegate
對象必須在對象創建時設置,並且不能更改。
因此,您必須設計一個可以區分各種網絡任務的委托對象,並適當地處理每個任務。
從理論上講,您可以創建單獨的委托對象,並維護一個以任務標識符為關鍵字的字典,該字典包含輔助委托對象的指針。 然后,您可以為NSURLSession
編寫一個委托,對於任務委托方法,該委托在其字典中查找任務標識符,並在適當的委托對象中調用適當的方法。 但這有點不雅致,因此您可能應該停下來,問問自己是否有解決問題的更簡單方法。
正如Rob所說,您不能更改NSURLSession的委托。
您還有其他選擇。
您可以設置一個下載管理器對象(可能是一個單例),該對象管理NSURLSession及其委托,並將其轉發消息到請求上傳或下載的任何對象。
您可以創建多個NSURSession實例,一個實例用於上傳,一個實例用於下載,每個實例都有一個單獨的委托。 (您說過不想這樣做,但是您應該重新考慮該選項。
您可以使用傳遞完成處理程序的NSURLSession
方法,而不使用委托。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.