【发布时间】:2011-05-19 17:33:50
【问题描述】:
谁能告诉我在 iPhone 编程过程中何时使用 AppDelegate.m 和 AppDelegate.h?我只使用 ViewController.m 和 ViewController.h 进行基本学习。我只想知道何时以及为何使用 AppDelegate。
【问题讨论】:
标签: iphone objective-c xcode delegates viewcontroller
谁能告诉我在 iPhone 编程过程中何时使用 AppDelegate.m 和 AppDelegate.h?我只使用 ViewController.m 和 ViewController.h 进行基本学习。我只想知道何时以及为何使用 AppDelegate。
【问题讨论】:
标签: iphone objective-c xcode delegates viewcontroller
两者都定义了类,但这些类用于不同的事情。 ViewController.h/m 定义了一个管理视图层次结构的视图控制器类——基本上是应用程序的一个屏幕。您可能有多个屏幕,每个屏幕都有自己的视图控制器。
AppDelegate.h/m 定义了一个整体管理应用程序的类。应用程序将创建该类的一个实例并发送该对象消息,让委托在明确定义的时间影响应用程序的行为。例如,-application:didFinishLaunchingWithOptions: 在应用程序完成启动并准备好做一些有趣的事情时发送。查看UIApplicationDelegate reference page 以获取应用委托可以实施以修改应用行为的消息列表。
【讨论】:
我想在@Caleb 的回答中添加以下内容。
如果不小心,AppDelegate 很容易成为应用程序中访问最多的对象之一。我通常避免从我的任何 ViewController 调用 AppDelegate 中的方法。除非需要向 AppDelegate 报告会影响整个应用程序行为的内容。
我的 AppDelegate 用于以下用途:
有关其他用例场景和 AppDelegate 的更详尽描述,请参阅iOS Application Programming Guide。
【讨论】:
视图控制器。 h/m 负责控制模型和视图之间的连接(更多关于 MVC here)。
AppDelegate。 h/m 负责应用程序的生命周期。当用户按下主页按钮并退出您的应用程序时该怎么办,当应用程序进入后台时该怎么办。诸如此类。
【讨论】:
viewcontrollers中声明应用需要使用的全局变量必须在AppDelegate文件中。