0

我按照 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 的对象。

4

2 回答 2

2

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

于 2012-10-04T02:09:57.327 回答
0

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

类 AppDelegate: UIResponder, UIApplicationDelegate {

变量窗口:UIWindow?

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

于 2021-03-30T06:55:44.580 回答