iOS Facebook SDK不保留委托导致EXC_BAD_ACCESS

时间:2012-03-29 10:33:27

标签: automatic-ref-counting facebook-ios-sdk

我正在使用Facebook iOS SDK进行项目,如果我在执行请求后弹出UIViewController但在收到答案之前,我会在尝试查看委托是否响应选择器时获得EXC_BAD_ACCESS。好吧,委托是UIViewController已经弹出,所以它可能不再存在了。

在研究这个问题时,我偶然发现了this在这里回答的问题,告诉我自从代表保留以来我不应该遇到这个问题。但答案有点老了,之后就开始使用arc了。所以我检查了SDK并注意到他们不再保留它了。

这是一个已知问题吗?我在这里错过了什么吗?

我尝试修改SDK并保留委托,问题就消失了。不过我不喜欢修改第三方库,因为我没有那么多的专业知识,我不确定在这种情况下arc是否真的是一个问题(我认为我们不需要使用retaing / release / autorelease了)。此外,我认为这是Facebook SDK,如果它是一个错误,有人应该已经偶然发现同样的问题并解决了它。

编辑:我现在意识到至少我使用的Facebook SDK版本没有使用arc(我不知道他们是否已经支持它),问题可能是这样:

@property(nonatomic,assign) id<FBRequestDelegate> delegate;

不应该保留吗?

EDIT2:对不起,我在之前链接的同一帖子中跳过了另一个answer

我指出的似乎现在在较新版本的SDK中已经过时了。最好的方法似乎是取消请求。

1 个答案:

答案 0 :(得分:0)

  

不应该保留吗?

绝对不是。如果你这样做那么你很可能有一个保留周期(VC拥有拥有VC的FBRequest。)

你是100%正确的,正确的做法是在取消分配视图控制器时取消请求,或者甚至更好的是将请求的委托设置为nil然后取消它。 / p>