我按照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的对象。
答案 0 :(得分:1)
我解决了我的问题。它最终会成为appDelegate变量的错误。问题很简单:我的标题和openSessionWithAllowLoginUI函数的实现文件之间有一点点拼写错误。这样的问题通常会在编译时被检测为错误,我很惊讶在这样的问题上没有构建错误,而只是警告不完整的实现......
答案 1 :(得分:0)
我面临同样的崩溃,我通过添加解决了这个问题
<块引用>类 AppDelegate:UIResponder、UIApplicationDelegate {
<块引用>var 窗口:UIWindow?
在我的 APP Delegate 中,这解决了我的问题。我使用的是 Xcode 12.3,当我尝试使用 firebase auth 进行注册时会发生此崩溃