簡體   English   中英

Objective-c(iOS)中的常見HTTP請求委托模式

[英]Common HTTP request delegate pattern in Objective-c (iOS)

我有一個發出HTTP請求的視圖控制器“ myViewController”。 我將請求的委托設置為self (myViewController的實例)。 一切正常,直到我在請求返回之前將myViewController從導航堆棧中彈出為止。 在這種情況下,請求嘗試將消息發送到已取消分配的myViewController(這將導致我的應用程序崩潰)。

當前,我正在通過在myViewController的dealloc方法中將所有請求的委托設置為nil來修補/解決此問題。 有什么更好的方法?

也許一個人可能負責處理所有HTTP請求?

不久前,我對於UIWebView委托事件也遇到了同樣的問題。 解決方案是跟蹤myViewController中所有傳出的HTTP請求。 因此,保留一個名為mutableRequests的實例變量,您將在其中添加每個發送的請求。 完成請求后,從此數組中刪除請求也可能是一個好主意。

-viewWillUnload方法中,只需枚舉mutableRequests並取消每個請求。 這不僅使您可以在取消分配視圖之前取消所有請求,而且還可以通過在使用對象時將所有對象保留在數組中來幫助您遵守發布/保留編程模型。

取決於您正在查看的控制器正在執行的操作。 如果請求僅與該VC相關,則執行Alex的建議。 如果您的應用圍繞請求(功能的中心部分)運行,則可能需要該單例。 您可能還希望所有視圖控制器都實現一個公共委托,以便當前的視圖控制器可以處理您的委托調用。 顯然,你的請求處理單將作為您的請求的實際代表,並調用你的委托方法是必要的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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