我偶尔需要取消 FaceBook 图表请求,但他们的 API 中似乎没有取消或类似的方法可以这样做。目前,当我分配给请求的委托(delegate)已被解除分配时,有时会发生崩溃。请问有什么方法可以在提交后取消图表请求吗?
最佳答案
我假设您在谈论 facebook-ios-sdk 项目,以及 Facebook.h 中缺少取消方法。我也注意到了这一点,并最终决定添加我自己的取消方法。请注意,您分配给请求的委托(delegate)不应该被解除分配然后被引用,因为请求保留委托(delegate)。参见 this similar question .现在,如果您发现自己出于某些其他原因确实需要取消方法...
添加取消方法:
Facebook 请求以不透明的方式发出。您永远看不到它们,只能通过 Facebook
类了解结果。在幕后,Facebook
类使用(非公开使用的)FBRequest
类发出 Graph API 请求。这个类基本上是一个奇特的 NSURLConnection
委托(delegate)。因此,要取消请求,只需告知成员 NSURLConnection
cancel
。将此方法添加到 FBRequest:
// Add to FBRequest.h
- (void)cancel;
还有……
// Add to FBRequest.m
- (void)cancel {
[_connection cancel];
[_connection release], _connection = nil;
}
现在,在 Facebook 类中公开接口(interface)以使用新方法...
// Add to Facebook.h
- (void)cancelPendingRequest;
还有……
// Add to Facebook.m
- (void)cancelPendingRequest {
[_request cancel];
[_request release], _request = nil;
}
这就是它的全部。上述方法将取消最近的请求,您将永远不会再收到它的消息。
关于ios - Facebook API - 如何取消图形请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4958912/