从AppDelegate调用AppController的现有实例的方法

时间:2014-08-24 22:20:11

标签: objective-c cocoa

我有一个名为AppController的班级, 我在AppDelegate中有以下方法,当选择菜单项时调用该方法。

-(IBAction)selectSug:(id) sender
{

    AppController * vc = [[AppController alloc]init];

    [vc selectSugItem:sender];

}

但是这个方法创建了AppController的新实例,所以我不能在AppController中使用现有的变量值。

请帮我解决。谢谢

1 个答案:

答案 0 :(得分:1)

如果这个AppController类是一个单例(意味着应该只有一个应用程序的其他部分可以访问它的实例),你可以简单地创建一个。

将此方法添加到AppController类(并添加标头声明):

+ (instancetype)shared
{
    static id shared = nil;
    static dispatch_once_t once;
    dispatch_once(&once, ^{
        shared = [[self alloc] init];
    });
    return shared;
}

然后你可以通过这样做来调用它:

-(IBAction)selectSug:(id) sender
{
    AppController * vc = [AppController shared];

    [vc selectSugItem:sender];
}