簡體   English   中英

如何將委托更改為NSURLSession

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM