2011-05-19 60 views
12

任何人都可以告诉我什么时候在iPhone编程中使用AppDelegate.m和AppDelegate.h?我只使用ViewController.m和ViewController.h进行基础学习。我只想知道何时以及为什么使用AppDelegate。谢谢。 !AppDelegate.m和View Controller.m之间的区别

回答

20

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

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

6

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

AppDelegate。 h/m负责您应用程序的生命周期。当用户按下home按钮并退出应用程序时该怎么办,该应用程序进入后台时该怎么做。像这样的事情。

+1

说到生命周期,声明应用程序需要在不同'viewcontrollers'中使用的全局变量必须位于'AppDelegate'文件中。 – Luca 2012-02-19 16:36:58

16

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

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

我把我的AppDelegate以下:

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

有关其他用例场景以及AppDelegate的更多介绍,请参阅iOS Application Programming Guide

+2

+1用于指出应用程序委托的危险。有些人用它来做各种事情,主要是因为它是单身人士,因此很容易在全球范围内访问。我不认为这是一个好方法。 – Caleb 2011-05-19 22:23:06

相关问题