ios - Facebook API - 如何取消图形请求

标签 ios facebook facebook-graph-api facebook-ios-sdk

我偶尔需要取消 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/

相关文章:

iphone - 如何使用xmpp框架仅列出facebook上的在线用户

database - 允许用户通过其他网络登录

ios - 背景音频不会播放

cookies - iframe 中的 Facebook Connect 应用程序无法在 IE7 中运行

ios - 锁屏本地通知处理 "slide to view"

javascript - 通过 Chrome 扩展在 Facebook 上分享

javascript - Facebook营销API : Param must be a valid Instagram account id

android - 与应用程序链接主机的 facebook 深层链接

ios - AFNetworking 接受所有内容类型

ios - 在数组上追加元素后,它只显示在追加方法上,当我们从另一个方法调用时为空 swift 3