我有一个逻辑问题。我需要从另一个类访问一个对象的实例。
我有一个名为FacebookController
的班级。它中有几个委托方法,例如fbDidLogin
。首先,当用户单击按钮时执行facebookloginButtonClicked
方法,在进行一些内部处理后,将调用fbDidLogin
方法,用户将登录到应用程序。 (所有这一切都很完美)。
现在我需要从应用程序中注销。有一个名为logout
的委托方法,我必须将其称为[facebook logout]
。
我添加了一个名为-(void) logoutFacebook
的方法。当用户单击注销按钮时,将调用以下方法。注销方法如下;
-(void) logoutFacebook {
[facebook logout];
}
只有当我从同一个viewController 注销(调用logoutFacebook
方法)时,注销才有效。
例如,如果我在一个名为Student
的班级中,我正在尝试调用logoutFacebook
的{{1}}方法。我的方法如下;
FacebookController
这不起作用,因为通过这样做,它将创建FacebookController *facebookController = [[FacebookController alloc]]init;
[facebookController logoutFacebook];
的新实例。所以我需要以某种方式访问FacebookController
(登录后创建)中的原始facebook
对象。如何访问此对象?
代码:
FacebookController
答案 0 :(得分:5)
FacebookController.m
类中的将此代码添加到@implementation
之上static FacebookController* Object;
将以下函数添加到.h文件
+ (FacebookController *) sharedInstance
在.m文件中实现上述功能
+ (FacebookController *) sharedInstance
{
if( Object == nil)
{
Object = [[FacebookController alloc]]init;
}
return Object;
}
现在,无论你想在哪里使用Facebook对象,都要像这样使用
[FacebookController sharedInstance];
现在,您的应用程序的整个生命周期中只有一个FacebookController
类实例。这称为单例模式 ..您可以通过谷歌查找它以获取更多详细信息。