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