我正在尝试将Facebook SDK集成到我正在构建的iOS5项目中。ios5上的Facebook SDK导致崩溃
遵循一条建议,我将Facebook特定文件上的编译器标志设置为'-fno-objc-arc'。这允许我成功构建项目,同时保留我的文件的ARC。
我已经通过并实施了基本的Facebook SDK步骤,并且它已成功登录并设置权限。问题是当我试图访问图表:
[facebook requestWithGraphPath:@"me/friends" andDelegate:(id)self];
我说的,而不只是“自我”“(ID)自我”是后者的原因抛出我的错误:
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是委托(有定义的方法)。
所以看起来Facebook Request对象试图发送消息到已经发布的委托。对?那是什么原因造成的?
不幸的是,这是我的iOS知识失败的地方;这是我做错了什么,或者我根本无法将Facebook SDK整合到一个支持ARC的项目中(没有大量修改)?我只是不确定该从哪里出发。
感谢,
凯文
Cliff,Facebook对象正在PhotoController中创建。 PhotoController应该自己创建一个副本吗?我不完全明白。 PhotoController在RootViewController中是这样创建的:PhotoController * photoController = [[PhotoController alloc] init]; – thekevinscott
明白了,就是这样! – thekevinscott
Uuhh ...我希望/假设我的回答有帮助?我看到你标记我是正确的。从你上面的评论来看,我假装你将它实例化为方法中的局部变量,然后释放它导致你的崩溃,并且我还假设你已经修改了将图片控制器存储在属性或ivar中的方法?无论如何,我很高兴你解决了它! :) – Cliff