0
我正在使用three20并实现模型,如TTRemoteExamples的示例。现在的问题是:当我点击并打开一个页面时,TTURLRequest发送出去,在从远程获取数据的过程中,我点击打开另一个页面。但之前的网络请求仍在那里搞乱了我的加载数据。所以我想知道当我切换到另一个页面时取消以前的网络请求的方式。或者当我点击按钮在同一页面上做一个新的请求。Three20:取消网络请求
感谢〜
我正在使用three20并实现模型,如TTRemoteExamples的示例。现在的问题是:当我点击并打开一个页面时,TTURLRequest发送出去,在从远程获取数据的过程中,我点击打开另一个页面。但之前的网络请求仍在那里搞乱了我的加载数据。所以我想知道当我切换到另一个页面时取消以前的网络请求的方式。或者当我点击按钮在同一页面上做一个新的请求。Three20:取消网络请求
感谢〜
要取消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!)。
感谢哥们,我用这个来解决:[[TTURLRequestQueue mainQueue] cancelRequestsWithDelegate:self];但我会标记你的,因为你给了我一些有用的观点!谢谢! –
啊,这也是一个非常漂亮的电话! –