AppDelegate.m和View Controller.m的区别?

问题描述 投票:13回答:3

谁能告诉我,在iPhone编程过程中,我们什么时候使用AppDelegate.m和AppDelegate.h?我在基础学习中只用过ViewController.m和ViewController.h。我只想知道什么时候和为什么要使用AppDelegate。

iphone objective-c xcode delegates viewcontroller
3个回答
23
投票

两者都定义了类,但类的用途不同。ViewController.hm定义了一个视图控制器类,该类管理一个视图的层次结构--基本上是一个应用程序的一个屏幕。你可能有多个屏幕,每个屏幕都有自己的视图控制器。

AppDelegate.hm定义一个管理应用程序整体的类。应用程序将创建该类的一个实例,并向该对象发送消息,让委托人在明确定义的时间影响应用程序的行为。例如,-application:didFinishLaunchingWithOptions:是在应用完成启动并准备做一些有趣的事情时发送的。请看一下 UIApplicationDelegate参考页 的消息列表,应用程序委托人可以实现这些消息来修改应用程序的行为。


19
投票

我想对 @Caleb 的回答补充以下内容。

如果不小心,AppDelegate很容易成为应用程序中访问量最大的对象之一。我通常避免从任何一个ViewControllers调用AppDelegate中的方法。除非,需要向AppDelegate报告一些会影响整个应用程序行为的事情。

我保留我的AppDelegate是为了以下目的。

  • 初始化: 任何需要在第一次启动时完成的工作(安装或更新后)
  • 从一个版本到另一个版本的数据迁移(例如,如果你使用CoreData和migrations)
  • 通过IBOutlets从MainWindow.xib链接的对象的配置。
  • 确定发射的初始方向
  • 在应用程序终止或进入后台模式之前,保存未提交的数据状态。
  • 注册苹果推送通知服务,并向我们的服务器发送设备令牌。
  • 打开支持的应用程序URL之一(例如:maps:/)。

有关其他用例场景和 AppDelegate 的更详尽描述,请参见《AppDelegate》。iOS应用编程指南.


6
投票

视图控制器......hm负责控制你的模型和你的视图之间的连接(更多关于 MVC 此处).

AppDelegate.hm负责你的应用的生命周期。当用户按下主键退出你的应用时该怎么做,当应用进入后台时该怎么做。这样的事情。

© www.soinside.com 2019 - 2024. All rights reserved.