在iOS应用程序中,我在AppDelegate
中实现了一些应用程序逻辑。
多个视图控制器等需要调用AppDelegate
,所以我将AppDelegate
放在Interface Builder中并给ViewControllers
一个IBOutlet AppDelegate*
并绘制了一个链接
在应用程序中,我现在看到,AppDelegate
创建了两个实例,一个被调用,一个获取所有通知,另一个链接到ViewControllers
。
所以我将我的应用更改为ViewControllers
:
app_del = (AppDelegate*)[[UIApplication sharedApplication] delegate]
。
然后我称之为appDelegate
。但这也是获取通知的实例。任何人都可以解释原因吗?
有谁能告诉我出了什么问题?我对谷歌搜索的怀疑是iOS创建了AppDelegate
实例,而Interface Builder不知道那个实例并创建另一个实例?这是对的吗?
任何人都可以给我一些关于如何在Interface Builder中最好地创建/计划实例的提示,以及它们在启动时在应用程序中创建的顺序以及我可以依赖它们创建它们的所有通知?
感谢任何提示, 托。
答案 0 :(得分:2)
你的怀疑是正确的。 iOS在启动应用程序时会创建应用程序委托的实例,此实例是注册为接收所有委托事件的实例,依此类推。请参阅here。
您添加到xib或storyboard中的任何内容都将是一个新实例,并且不起作用。
要获取指向 应用程序委托的指针,请使用以下方法:
[[UIApplication sharedApplication] delegate];
有一种思想流派认为你不应该过度使用应用程序委托作为方便可用的全局数据或方法存储,但这超出了本答案的范围。