使用[[UIApplication sharedApplication]委托时]

ras*_*tin 13 iphone delegates uiapplicationdelegate pushviewcontroller

我不知道何时或为何要使用 [[UIApplication sharedApplication] delegate]

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

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

有人能帮我吗?

谢谢!!

Ken*_*ker 22

[[UIApplication sharedApplication] delegate]会给你一个指向你的 app代表的指针.在制作项目时自动创建的那个.通常它的名字YourAppNameAppDelegate.

你的代码有两点是错误的.

  1. 当你宣布MyView *delegate这应该是id delegateYourAppNameAppDelegate *delegate.

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


ben*_*e89 5

self.appDelegate = [[UIApplication sharedApplication] delegate];
Run Code Online (Sandbox Code Playgroud)

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

[UIApplication sharedApplication] <---允许访问单身人士

delegate方法返回指向app delegate的指针.

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