Facebook iOS崩溃
我正在尝试为iOS设置facebook SDK 3.5。我已经让它工作的很好,但它现在崩溃了。只有当用户通过默认的iOS facebook设置(即不是应用商店中的facebook应用程序)登录时,才会发生崩溃。当点击facebook“登录”视图时,应用程序会崩溃 崩溃是:错误:[N错误fberrorShouldNotifyUser]:发送到实例的选择器无法识别 我做了一些工作,一些人建议将-Objc放在“其他链接器标志”中。我没有确切的答案,但我想我也有类似的答案。我需要其他库的其他选项。以下是我的选择: 有人能告诉我这是否是问题的原因吗?如果没有,有人知道到底是什么导致了这次事故吗?谢谢 编辑 这种方法似乎在第一个“如果”时就出现了错误Facebook iOS崩溃,ios,objective-c,xcode,facebook,Ios,Objective C,Xcode,Facebook,我正在尝试为iOS设置facebook SDK 3.5。我已经让它工作的很好,但它现在崩溃了。只有当用户通过默认的iOS facebook设置(即不是应用商店中的facebook应用程序)登录时,才会发生崩溃。当点击facebook“登录”视图时,应用程序会崩溃 崩溃是:错误:[N错误fberrorShouldNotifyUser]:发送到实例的选择器无法识别 我做了一些工作,一些人建议将-Objc放在“其他链接器标志”中。我没有确切的答案,但我想我也有类似的答案。我需要其他库的其他选项。以下是
如果已经在使用ARC的项目,则不需要添加此链接器标志 确保在代码中导入了
NSError+FBError.h
文件,该文件就是从中提取该类别的
从技术上讲,如果要导入
,则会包含该类别定义
此外,如果您的代码找不到头文件,请确保目标的摘要页面中的链接框架和库列表中包含了
FacebookSDK.Framework
。当设备从Facebook登录返回到您的应用程序时,您的应用程序必须在后台运行。我通过打开“快速应用程序切换”修复了这个错误。它是目标信息选项卡下名为“应用程序不在后台运行”的设置。应该不是。我也有同样的问题。据此,
您需要设置-ObjC
标志或使用FBErrorUtility
而不是fberror*
我刚刚添加了-ObjC标志,效果很好。谢谢您的回复!有些项目使用ARC,有些项目不使用,因此我使用ARC。那好吗?但是我的没有使用ARC。我正在导入,当我单击finder中的show时,它会将我带到FacebookSDK文件夹,所以我相信这很好。我唯一找不到的文件是NSError+FbError.h文件。。不确定您是否打算将它们分开,但也找不到它们分开。还有其他建议吗?谢谢文件应该在~/Documents/FacebookSDK/Headers中。在Xcode中,如果展开FacebookSDK.framework,文件是否以红色列出?当您将框架文件拖到项目中时,是否复制了这些文件?我记不起是简单地拖了还是如何导入的。我道歉。但是,当我展开FacebookSDK.framework时,我看到一个蓝色的“Header”文件夹,并且没有一个文件是红色的,我认为这意味着它们添加正确。而且,如果用户没有通过集成的iOS功能登录,一切都会正常运行,所以我认为facebook sdk很好?听起来好像导入正确。处理登录视图的类包括FacebookSDK.h文件?请参见此问题:
-ObjC
标志可能会不必要地膨胀最终二进制文件,因为它会将所有Objective-C对象文件包含在所有引用库中,无论它们是否在应用程序中使用。它应该被视为最后的手段,而不是让事情顺利进行的一面神奇的旗帜。相反,请考虑<代码> -FultLoad - (void)loginView:(FBLoginView *)loginView
handleError:(NSError *)error {
NSString *alertMessage, *alertTitle;
if (error.fberrorShouldNotifyUser) // CRASH HERE {
// If the SDK has a message for the user, surface it. This conveniently
// handles cases like password change or iOS6 app slider state.
alertTitle = @"Facebook Error";
alertMessage = error.fberrorUserMessage;
} else if (error.fberrorCategory == FBErrorCategoryAuthenticationReopenSession) {
// It is important to handle session closures since they can happen
// outside of the app. You can inspect the error for more context
// but this sample generically notifies the user.
alertTitle = @"Session Error";
alertMessage = @"Your current session is no longer valid. Please log in again.";
} else {
// For simplicity, this sample treats other errors blindly.
alertTitle = @"Unknown Error";
alertMessage = @"Error. Please try again later.";
NSLog(@"Unexpected error:%@", error);
}
}