AppDelegate.m和View Controller.m之间的区别

时间:2011-05-19 17:33:50

标签: iphone objective-c xcode delegates viewcontroller

在iPhone编程期间我们何时使用AppDelegate.m和AppDelegate.h可以告诉我吗?我只使用ViewController.m和ViewController.h进行基本学习。我只是想知道AppDelegate的使用时间和原因。谢谢。 !!

3 个答案:

答案 0 :(得分:22)

两者都定义了类,但这些类用于不同的事情。 ViewController.h / m定义了一个视图控制器类,用于管理视图层次结构 - 基本上是应用程序的一个屏幕。您可能有多个屏幕,每个屏幕都有自己的视图控制器。

AppDelegate.h / m定义了一个整体管理应用程序的类。该应用程序将创建该类的一个实例,并发送该对象消息,让委托在明确定义的时间影响应用程序的行为。例如,-application:didFinishLaunchingWithOptions:在应用程序完成启动时发送,并准备好做一些有趣的事情。请查看UIApplicationDelegate reference page以获取应用程序委托可以实现的消息列表,以修改应用程序的行为。

答案 1 :(得分:18)

我想将以下内容添加到@ Caleb的答案中。

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

我将AppDelegate保留以下内容:

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

对于其他用例场景以及对AppDelegate的更多描述,请参阅iOS Application Programming Guide

答案 2 :(得分:6)

视图控制器。 h / m负责控制模型和视图之间的连接(更多关于 MVC here)。

<强>的AppDelegate 即可。 h / m负责您的应用程序的生命周期。当用户按下主页按钮并退出应用程序时应该怎么做,当应用程序进入后台时该怎么做。这样的事情。