Facebook API - 如何取消图形请求

Cas*_*ger 8 facebook facebook-graph-api ios facebook-ios-sdk

我偶尔需要取消FaceBook图形请求,但是它们的API似乎没有取消或类似方法.此时,有时会发生崩溃,因为我分配给请求的委托已被解除分配.有没有办法在提交后取消图表请求?

Mat*_*ing 10

我假设您正在谈论facebook-ios-sdk项目,以及Facebook.h中缺少取消方法.我也注意到了这一点,并最终决定添加我自己的取消方法.请注意,您分配给请求的委托不应该被释放然后被引用,因为请求会保留委托.看到这个类似的问题.现在,如果你发现自己真的需要取消其他原因的方法......

添加取消方法:
Facebook请求以不透明的方式进行.你永远不会看到它们,只能通过Facebook课堂听到结果.在引擎盖下,Facebook该类使用(非公共用途)FBRequest类生成Graph API请求.这个班基本上是一个花哨的NSURLConnection代表.因此,要取消该请求,NSURLConnection必须告知该成员cancel.将此方法添加到FBRequest:

// Add to FBRequest.h
- (void)cancel;
Run Code Online (Sandbox Code Playgroud)

和...

// Add to FBRequest.m
- (void)cancel {
    [_connection cancel];
    [_connection release], _connection = nil;
}
Run Code Online (Sandbox Code Playgroud)

现在,在Facebook类中公开一个接口以使用新方法......

// Add to Facebook.h
- (void)cancelPendingRequest;  
Run Code Online (Sandbox Code Playgroud)

和...

// Add to Facebook.m
- (void)cancelPendingRequest {
    [_request cancel];
    [_request release], _request = nil;
}
Run Code Online (Sandbox Code Playgroud)

这里的所有都是它的.上述方法将取消最近的请求,您再也不会听到它了.