0

在一个 iOS 应用程序中,我在AppDelegate.

几个视图控制器等需要调用AppDelegate,所以我将 放在AppDelegateInterface Builder 中并给出了ViewControllersanIBOutlet AppDelegate*并绘制了一个链接。

在应用程序中,我现在看到似乎有两个已AppDelegate创建实例,一个被调用并获取所有通知,另一个被链接到ViewControllers.

所以我改变了我的应用程序以使用ViewControllers

app_del = (AppDelegate*)[[UIApplication sharedApplication] delegate].

然后我打电话给这个appDelegate。但这也是与获取通知的实例不同的实例。谁能解释为什么?

谁能告诉我出了什么问题?我对谷歌搜索的怀疑是 iOS 创建了AppDelegate实例,而 Interface Builder 不知道那个实例并创建了另一个实例?那是对的吗?

任何人都可以给我一些关于如何在 Interface Builder 中最好地创建/计划实例的提示,以及它们在启动时在应用程序中创建的顺序以及我可以依靠什么通知来证明它们都已创建?

感谢您的任何提示,托斯滕。

4

1 回答 1

2

你的怀疑是正确的。iOS 在启动您的应用程序时创建您的应用程序委托的一个实例,该实例是注册以接收所有委托事件等的实例。见这里

您添加到 xib 或情节提要中的任何内容都将是一个新实例,并且将不起作用。

要获取指向应用程序委托的指针,使用以下方法:

[[UIApplication sharedApplication] delegate];

有一种观点认为您不应该过度使用应用程序委托作为方便可用的全局数据或方法存储,但这超出了此答案的范围。

于 2012-11-24T08:10:10.080 回答