当使用[[uiapplication sharedApplication]委托
-
28-09-2019 - |
题
我不知道何时或为什么要使用 [[UIApplication sharedApplication] delegate]
我在 [self.navigationController pushViewController:myView Animation:YES]
没有导航。我做 MyView *delegate = [[UIApplication sharedApplication] delegate]
和 [delegate pushViewController:myView Animation:YES]
使导航正常工作。
我不知道该解决方案是否正确,此外,我不知道该用途是什么 [[UIApplication sharedApplication] delegate]
或它对应用程序的影响是什么。
有人能帮我吗?
谢谢!!
解决方案
[[UIApplication sharedApplication] delegate]
会给你一个指针 您的 应用委托。制作项目时会自动创建的一个。通常是命名的 YourAppNameAppDelegate
.
您的代码有两个问题。
当您声明时
MyView *delegate
这要么应该是id delegate
或者YourAppNameAppDelegate *delegate
.您不必通过应用程序委托访问您的导航控制器。我会研究为什么self.navigationController失败,并解决这个问题。当您依靠应用程序委托时,您基本上正在实现单例模式。由于单身图案是最不酷的编程设计模式,因此在与其他程序员交谈时,它不会赢得您的任何积分。
其他提示
self.appDelegate = [[UIApplication sharedApplication] delegate];
当您在IVARS中创建一个称为AppDelegate的变量时,它不仅可以自动设置为App委托 - 您必须自己设置。从应用程序中的任何地方,您可以通过应用程序Singleton访问代表。
[UIApplication sharedApplication]
<---给访问单例
委托方法返回指向应用程序委托的指针。
因此,由于您需要初始化您的变量,因此有两个逻辑的地方可以做到 - 如果创建一个或在使用视图及其控制器开始时,则在初始化器中进行了两个逻辑位置,则在初始化器中进行。位置在ViewDidload中。