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



我有一个类叫AppController,我在AppDelegate中有以下方法,当菜单项被选中时调用。

-(IBAction)selectSug:(id) sender
{
    AppController * vc = [[AppController alloc]init];
    [vc selectSugItem:sender];
}

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

请给我一个解决方案。由于

如果这个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];
}

最新更新