appdelegate 共享实例委托

Posted

技术标签:

【中文标题】appdelegate 共享实例委托【英文标题】:appdelegate shared instance delegate 【发布时间】: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];

【问题讨论】:

【参考方案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 方法中。

以上是关于appdelegate 共享实例委托的主要内容,如果未能解决你的问题,请参考以下文章

Incompatible pointer types assiging to "UIViewController" *_Nullable' from 'AppDel

在 AppDelegate 中实例化初始 UIViewController

AppDelegate 类型的值没有成员 managedObjectContext

释放 appDelegate 实例? [复制]

从 appdelegate 更新视图控制器 - 最佳实践?

swift : AppDelegate 和 NSManagedObjectContext 为 nil