13

我不知道何时或为什么应该使用[[UIApplication sharedApplication] delegate]

[self.navigationController pushViewController:myView Animation:YES]我在不导航时使用委托。我使MyView *delegate = [[UIApplication sharedApplication] delegate]导航[delegate pushViewController:myView Animation:YES]正常工作。

我不知道解决方案是否正确,此外我不知道它的用途[[UIApplication sharedApplication] delegate]或对应用程序的影响。

有人能帮我吗?

谢谢!!

4

2 回答 2

22

[[UIApplication sharedApplication] delegate]会给你一个指向你的应用委托的指针。制作项目时自动创建的那个。通常它被命名为YourAppNameAppDelegate.

您的代码有两件事有点问题。

  1. 当您声明MyView *delegate这应该是id delegate或时YourAppNameAppDelegate *delegate

  2. 您不必通过应用程序委托访问您的 navigationController。我会调查 self.navigationController 失败的原因,并解决这个问题。当您依赖应用程序委托时,您基本上是在实现单例模式。因为单例模式是最不酷的编程设计模式,所以在与其他程序员交谈时,它不会为您赢得任何分数。

于 2010-11-25T13:15:12.820 回答
4
self.appDelegate = [[UIApplication sharedApplication] delegate];

当您在 IVar 中创建一个名为 appDelegate 的变量时,它不会自动设置为应用程序委托 - 您必须自己设置它。从应用程序的任何地方,您都可以通过应用程序单例访问委托。

[UIApplication sharedApplication]<--- 允许访问单例

委托方法返回一个指向应用委托的指针。

因此,由于需要初始化您的变量,因此有两个逻辑位置可以执行此操作 - 如果您创建一个或在接近使用视图及其控制器开始时调用的方法中,一个是在初始化程序中,并且地点在 viewDidLoad 中。

于 2010-11-25T13:14:08.137 回答