2011-09-12 148 views
0

我正在使用three20并实现模型,如TTRemoteExamples的示例。现在的问题是:当我点击并打开一个页面时,TTURLRequest发送出去,在从远程获取数据的过程中,我点击打开另一个页面。但之前的网络请求仍在那里搞乱了我的加载数据。所以我想知道当我切换到另一个页面时取消以前的网络请求的方式。或者当我点击按钮在同一页面上做一个新的请求。Three20:取消网络请求

感谢〜

回答

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

+0

感谢哥们,我用这个来解决:[[TTURLRequestQueue mainQueue] cancelRequestsWithDelegate:self];但我会标记你的,因为你给了我一些有用的观点!谢谢! –

+0

啊,这也是一个非常漂亮的电话! –