gpt4 book ai didi

ios - iOS5 上的 Facebook SDK 导致崩溃

转载 作者:行者123 更新时间:2023-11-29 04:55:14 25 4
gpt4 key购买 nike

我正在尝试将 Facebook SDK 集成到我正在构建的 iOS5 项目中。

根据一条建议,我将 Facebook 特定文件上的编译器标志设置为“-fno-objc-arc”。这使我能够成功构建项目,同时为我的文件保留 ARC。

我已经完成并实现了基本的 Facebook SDK 步骤,并且成功登录并设置权限。当我尝试访问图表时出现问题:

[facebook requestWithGraphPath:@"me/friends" andDelegate:(id)self];

我之所以说“(id)self”而不只是“self”,是因为后者会引发错误:

warning: sending 'PhotoController *__strong' to parameter of incompatible type 'id<FBRequestDelegate>' [3]

我已经实现了所有的回调方法。唯一成功调用的方法是

- (void)requestLoading:(FBRequest *)request;

我认为应用程序在接收数据时崩溃。

根据其他线程中的建议,我打开了 NSZombie,结果如下:

2011-11-14 13:40:29.896 Friend Carousel[9660:f803] facebook: <Facebook: 0x6e21550>
2011-11-14 13:40:29.898 Friend Carousel[9660:f803] self: <PhotoController: 0x6e215a0>
2011-11-14 13:40:31.115 Friend Carousel[9660:f803] *** -[PhotoController respondsToSelector:]: message sent to deallocated instance 0x6e215a0

其中 facebook 是 facebook 对象,PhotoController 是委托(delegate)(定义了该方法)。

因此,Facebook Request 对象似乎正在尝试向已发布的委托(delegate)发送消息。正确的?这就是导致崩溃的原因?

不幸的是,这就是我的 iOS 知识让我失败的地方;这是我做错了,还是我根本无法将 Facebook SDK 合并到启用 ARC 的项目中(无需进行大量修改)?我只是不太确定从这里该去哪里。

谢谢

凯文

最佳答案

我会在这里刺一下。我的疯狂猜测是查看 PhotoController 的分配位置。如果它不保留在 ivar 中而仅提供给 Facebook 对象,那么崩溃就会有意义,因为不应保留委托(delegate)属性。换句话说,您不能依赖 Facebook 对象保留 PhotoController,因为这对于委托(delegate)对象来说是不好的做法。 (委托(delegate)应该是弱引用。)无论在哪里分配和保留 Facebook 对象,您都应该保留 PhotoController 的副本,并在 Facebook 对象的生命周期内保留它。

关于ios - iOS5 上的 Facebook SDK 导致崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8127172/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com