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