我很感兴趣其他开发者如何在AppDelegate和ViewController之间划清界限。我想知道其他人是如何处理的,而不仅仅是我的具体案例。例子将不胜感激。
我已经达到了ViewController中需要AppDelegate通知的程度。在我的情况下,当前的ViewController需要知道应用程序何时停用或终止。
提前致谢
答案 0 :(得分:2)
我尽量避免使用App Delegate。使用它作为一种全局变量的拐杖太容易了,导致设计不良。在您的特定情况下,您可以在应用程序的任何位置(通过NSNotificationCenter)访问这些通知,而无需使用App Delegate:
NSNotificationCenter* defaultCenter = [NSNotificationCenter defaultCenter];
[defaultCenter addObserver:self
selector:@selector(applicationWillResignActive:)
name:UIApplicationWillResignActiveNotification
object:nil];
答案 1 :(得分:1)
View Controllers管理一组视图(或者现在可能还有一组其他视图控制器)。超出管理视图领域的任何事情都不属于视图控制器。我们中的许多人通过在视图控制器中添加简单 UITableViewDelegates
和UITableViewDataSources
来改变此规则;或其他类似的代码。
AppDelegate是整个应用程序的委托。它应该处理应用程序级事件。当应用程序得到后台处理时,您可能需要为整个应用程序中处理的数据保存状态。
UIViewController
需要AppDelegate接收和处理的事件通知没有任何问题。应用程序委托应该是应用程序范围的需求,但视图控制器可能有特定需求。只需拿走你的视图控制器并注册你想要的事件(如果app委托也处理完全相同的事件也无关紧要),然后做你需要做的任何事情来正确管理你的观点。