【问题标题】:appdelegate shared instance delegateappdelegate 共享实例委托
【发布时间】:2011-02-19 23:40:49
【问题描述】:
    MyAppDelegate *appD;        
    appD = [UIApplication sharedApplication];

    if(appD.sw1.on)
        NSLog(@"It is ON");
    else
        NSLog(@"It is OFF");

编译时不会出错。在没有任何警告的情况下运行,但它不起作用。

我不明白问题是什么。

...

编辑: OMG,也应该调用委托方法:

appD = (MyAppDelegate *)[[UIApplication sharedApplication] delegate];

【问题讨论】:

    标签: objective-c scope appdelegate


    【解决方案1】:

    我推荐您使用这种方法来共享应用程序委托: https://coderwall.com/p/z4h4uw?i=2&p=1&q=&t%5B%5D=%21%21mine&t%5B%5D=%21%21bookmarks

    【讨论】:

      【解决方案2】:

      并实例化了一个 appDelegate ...

      不,您还没有实例化任何东西,您只是声明了一个可以指向您的应用委托的变量。但是您尚未为该变量分配任何内容。

      这里实例化另一个对象是错误的,因为应用程序委托实例已经存在。您只需引用现有的应用程序委托并将其分配给您的变量:

      appD = (myAppDelegate *)[[UIApplication sharedApplication] delegate];
      

      (顺便说一句,您应该遵循命名约定。类名应始终以大写字母开头。)

      【讨论】:

      • 我怎么知道你需要输入什么?你甚至不告诉我你的班级的名字。我上面建议的行是正确的。把它放在你的类的 init 方法中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-23
      • 2023-04-07
      • 2021-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多