我正在使用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中已经过时了。最好的方法似乎是取消请求。
答案 0 :(得分:0)
不应该保留吗?
绝对不是。如果你这样做那么你很可能有一个保留周期(VC拥有拥有VC的FBRequest
。)
你是100%正确的,正确的做法是在取消分配视图控制器时取消请求,或者甚至更好的是将请求的委托设置为nil
然后取消它。 / p>