访问Facebook对象委托?

时间:2011-07-29 01:23:29

标签: iphone objective-c facebook-graph-api

我发布的用户Facebook墙上的代码类似于:

[appDelegate.facebook requestWithGraphPath:@"me/feed" 
                  andParams:params
              andHttpMethod:@"POST"
                andDelegate:self];

如果我在请求完成之前解除了托管UIViewController,那么当请求确实完成时我会崩溃,因为代理已经被解除了。

有什么方法可以解决这个问题吗?我真的不想像我的appDelegate那样创建一个高级对象的FB委托,这看起来很傻。

我在这里面对的问题有一个很好的描述:https://github.com/facebook/facebook-ios-sdk/issues/220

1 个答案:

答案 0 :(得分:0)

在控制器的dealloc方法中,将Facebook对象的委托设置为nil。在你的情况下,这将是这样的:

- (void)dealloc {
    appDelegate.facebook.sessionDelegate = nil;
    [super dealloc];
}

当请求完成时,将在nil对象上调用委托方法,该对象将以静默方式吞下该消息。

这是一个很好的习惯,可以在任何时候将self设置为任何对象的委托。