Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/101.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Facebook iOS崩溃_Ios_Objective C_Xcode_Facebook - Fatal编程技术网

Facebook iOS崩溃

Facebook iOS崩溃,ios,objective-c,xcode,facebook,Ios,Objective C,Xcode,Facebook,我正在尝试为iOS设置facebook SDK 3.5。我已经让它工作的很好,但它现在崩溃了。只有当用户通过默认的iOS facebook设置(即不是应用商店中的facebook应用程序)登录时,才会发生崩溃。当点击facebook“登录”视图时,应用程序会崩溃 崩溃是:错误:[N错误fberrorShouldNotifyUser]:发送到实例的选择器无法识别 我做了一些工作,一些人建议将-Objc放在“其他链接器标志”中。我没有确切的答案,但我想我也有类似的答案。我需要其他库的其他选项。以下是

我正在尝试为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); } }