尝试获取AppDelegate时出现“无法识别的选择器发送到实例”错误

时间:2012-10-03 08:34:31

标签: ios facebook appdelegate

我按照Facebook的说明(http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/)尝试实施Facebook登录按钮。但是,我将"无法识别的选择器发送到实例"尝试调用应用程序委托方法时出错。

方法:

- (IBAction)pressFBLogin:(id)sender {
    MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
    [appDelegate openSessionWithAllowLoginUI:YES];
}

从错误中,我认为是指向错误实例的内存指针错误。我将断点设置为:

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

确实达到了这个声明,因此行动约束没有错。尝试运行下一个语句时出现错误:

[appDelegate openSessionWithAllowLoginUI:YES];

我在监视窗口中发现的一件事在调试时看起来很奇怪是appDelegate变量。当断点位于

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

变量显示为:

appDelegate = (MyViewController *)0x003b9a10
> UIViewController(UIViewController)
> delegate = (objc_object *) 0x0033edb0

变量赋值后,断点位于

[appDelegate openSessionWithAllowLoginUI:YES];

变量显示为:

appDelegate = (MyViewController *)0x00316480
> UIViewController(UIViewController)
> delegate = (objc_object *) 0x00000000

在这两个阶段,appDelegate似乎都是MyAppDelegate的对象。

2 个答案:

答案 0 :(得分:1)

我解决了我的问题。它最终会成为appDelegate变量的错误。问题很简单:我的标题和openSessionWithAllowLoginUI函数的实现文件之间有一点点拼写错误。这样的问题通常会在编译时被检测为错误,我很惊讶在这样的问题上没有构建错误,而只是警告不完整的实现......

答案 1 :(得分:0)

我面临同样的崩溃,我通过添加解决了这个问题

<块引用>

类 AppDelegate:UIResponder、UIApplicationDelegate {

<块引用>

var 窗口:UIWindow?

在我的 APP Delegate 中,这解决了我的问题。我使用的是 Xcode 12.3,当我尝试使用 firebase auth 进行注册时会发生此崩溃