Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.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
Ios &引用;已将无法识别的选择器发送到实例";尝试获取AppDelegate时出错_Ios_Facebook_Appdelegate - Fatal编程技术网

Ios &引用;已将无法识别的选择器发送到实例";尝试获取AppDelegate时出错

Ios &引用;已将无法识别的选择器发送到实例";尝试获取AppDelegate时出错,ios,facebook,appdelegate,Ios,Facebook,Appdelegate,我遵循Facebook的指示(http://developers.facebook.com/docs/howtos/login-with-facebook-using-ios-sdk/)并尝试实现一个facebook登录按钮。但是,我在尝试调用应用程序委托方法时遇到了“无法识别的选择器发送到实例”错误 方法: - (IBAction)pressFBLogin:(id)sender { MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIAp

我遵循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];
在执行调试时,我从watch窗口中发现一个似乎很奇怪的东西是appDelegate变量。当断点在

MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];
变量如下所示:

appDelegate = (MyViewController *)0x003b9a10
> UIViewController(UIViewController)
> delegate = (objc_object *) 0x0033edb0
appDelegate = (MyViewController *)0x00316480
> UIViewController(UIViewController)
> delegate = (objc_object *) 0x00000000
变量赋值后,断点位于

[appDelegate openSessionWithAllowLoginUI:YES];
变量如下所示:

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

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

我解决了我的问题。appDelegate变量最终没有问题。问题很简单:openSessionWithAllowLoginUI函数的头和实现文件之间有一点输入错误。这样的问题通常会在编译时被检测为错误,我很惊讶在这样的问题上没有生成错误,而只是一个未完成实现的警告…

我面临同样的崩溃,我通过添加

类AppDelegate:UIResponder、UIApplicationLegate{

变量窗口:UIWindow


在我的应用程序委派中,这解决了我的问题。我使用的是Xcode 12.3,当我尝试使用firebase auth注册时发生此崩溃,听起来好像你错误地将某个viewController的委派分配给了你的应用程序委派。是的,看起来是这样,但我找不到导致此问题的源。我确实有一个“委派”属性,我尝试将该属性重命名为“mydelegate”,但仍然显示相同的错误。