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

Leg*_*las 13 iphone xcode delegates objective-c viewcontroller

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

Cal*_*leb 22

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

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


oct*_*cty 18

我想在@ Caleb的回答中添加以下内容.

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

我将AppDelegate保留为以下内容:

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

有关其他用例场景和AppDelegate的更多描述,请参阅iOS应用程序编程指南.

  • +1用于指出应用代表的危险.有些人用它来做各种事情,主要是因为它是一个单身人士,因此很容易在全球范围内访问.我认为这不是一个好方法. (4认同)

Fra*_*sco 6

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

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