Three20:取消网络请求

时间:2011-09-12 06:06:57

标签: iphone objective-c ios4 three20

我正在使用three20并实现类似TTRemoteExamples示例的模型。现在的问题是:当我点击并打开一个页面时,TTURLRequest发出,在从远程获取数据期间,我点击打开另一个页面。但是之前的网络请求仍然存在我加载的数据。所以当我切换到另一个页面时,我想知道取消先前网络请求的方法。或者,当我单击按钮在同一页面中执行新请求时。

感谢〜

1 个答案:

答案 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!)。