我正在使用three20并实现类似TTRemoteExamples示例的模型。现在的问题是:当我点击并打开一个页面时,TTURLRequest发出,在从远程获取数据期间,我点击打开另一个页面。但是之前的网络请求仍然存在我加载的数据。所以当我切换到另一个页面时,我想知道取消先前网络请求的方法。或者,当我单击按钮在同一页面中执行新请求时。
感谢〜
答案 0 :(得分:1)
要取消TTURLRequest,请保留对它的引用(通常在实例变量中),然后向其发送“取消”消息。像这样:
[self.myRequest cancel];
如果您不希望通知代理被取消请求,请执行以下操作:
// I'm assuming self is the delegate here, that may not be true
[[self.myRequest delegates] removeObject:self];
[self.myRequest cancel];
您通常也希望在视图控制器dealloc方法中执行此操作。如果在取消分配viewController之后请求仍然继续,它将尝试向其发送委托消息,并且您将获得错误的访问崩溃。
至于你取消它的时间,这取决于你。如果你需要它在用户离开视图控制器时停止,那么实现UIViewController的viewWillDisappear:或viewDidDisappear:方法(不要忘记调用super!)。