我做的是应用程序的更新模组。 我想要做的是:
如果有一个新版本检测,提示用户更新,并在同一时间,取消所有的网络请求,如果有。 该请求可由AFNETWORK创建,可以像[:returningResponse:错误:NSURLConnection的sendSynchronousRequest]创建的,所有种类的网络请求,只是取消了他们。 我可以吗?
我做的是应用程序的更新模组。 我想要做的是:
如果有一个新版本检测,提示用户更新,并在同一时间,取消所有的网络请求,如果有。 该请求可由AFNETWORK创建,可以像[:returningResponse:错误:NSURLConnection的sendSynchronousRequest]创建的,所有种类的网络请求,只是取消了他们。 我可以吗?
使用创建的连接+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
不能被取消。 如果你从后台线程叫吧,你可以杀死线程本身。
更好的方法是使用NSOperationQueue和对象的NSOperation添加到队列中发起的网络连接。 或者,您可以创建的NSOperation的子类,并让每个实例观察其自定义事件通知cancel
方法为目标。 通过这种方法,你只需要发布的自定义通知触发取消您的操作及其关联的网络连接的所有实例。
如果你正在使用AFHTTPClient
那么你可以得到它的操作队列的保持并取消所有的操作就可以了。
但是,除非你把所有的名单NSURLConnection
你已经创建的对象,我不知道的方式来简单地取消所有NSURLConnection
对象。
在评论,OP说,他之所以想这样做是因为他担心应用程序的其它部分将试图访问网络的API,不再可用。
如果是这样的情况下,要做到这一点的最好办法是为你的应用程序的其他部分提供你的一部分,更新,可以打电话说的API“放弃一切!”。 这有几个优点:
我们认为,此更新组件不是一个,可以独立地设计应用程序的其余部分。