【问题标题】:Call method of Existing Instance of AppController from AppDelegate从 AppDelegate 调用 AppController 现有实例的方法
【发布时间】:2014-08-24 22:20:10
【问题描述】:

我有一个班级叫AppController, And I have following method in AppDelegate which is invoked when menu item is selected.

-(IBAction)selectSug:(id) sender
{

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

    [vc selectSugItem:sender];

}

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

请帮我解决一下。谢谢

【问题讨论】:

  • 你在哪里实例化AppController?让实例为全局并使用它。
  • @trick14 AppController 是包含所有与 mainMenu.xib (UI) 一起工作的代码的类,它是项目中除 AppDelegate 之外的唯一类。我在任何地方都看不到 AppController 的实例化。

标签: objective-c cocoa


【解决方案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];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-27
    • 1970-01-01
    • 2016-08-30
    • 1970-01-01
    • 2014-11-18
    • 1970-01-01
    • 2014-06-20
    • 2014-06-29
    相关资源
    最近更新 更多