随时访问在另一个视图控制器中创建的对象

时间:2012-03-13 16:32:49

标签: objective-c ios cocoa-touch

我有一个逻辑问题。我需要从另一个类访问一个对象的实例。

我有一个名为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

1 个答案:

答案 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类实例。这称为单例模式 ..您可以通过谷歌查找它以获取更多详细信息。