代码之家  ›  专栏  ›  技术社区  ›  Andrew

AppDelegate与main.m的关系

  •  8
  • Andrew  · 技术社区  · 16 年前

    好吧,我对obj-c+cocoa完全陌生,所以这可能是显而易见的,但下面是:

    似乎你可以把你的整个程序放在appdelegate中,它会运行得很好,你甚至不需要main.m,但反过来就不行了,如果你要做一个cocoa应用,你至少要有appdelegate。

    我做过很多php web开发和命令行工具,所以我想我要找的是程序将首先执行的文件,并打算“控制”其余的文件。

    有人能帮助我理解Cocoa程序中发生了什么,AppDelegate和main.m是如何相关的(或者不相关),以及程序的流程应该是什么吗?

    2 回复  |  直到 16 年前
        1
  •  8
  •   Kristopher Johnson    13 年前

    许多面向对象系统(如Cocoa)的一个关键特性是 "inversion of control" ,这基本上意味着框架正在运行一切,您编写的任何代码都在它的控制之下。

    因此,与PHP不同,您不需要编写在启动时执行的代码。您要做的是为app委托、控制器、视图和其他对象定义方法,并让框架在需要时调用这些方法。你将永远看不到整个程序的整体“控制流”;您将只看到它作为控制流进入您的程序部分。

    在Cocoa应用程序中,应用程序的很多逻辑实际上都在view controllers中,而不是在app delegate中。app委托通常处理启动和关闭的职责,但是其他对象在启动和关闭之间完成大部分工作。所以不要试图把所有东西都塞进应用程序代理中。

        2
  •  11
  •   jtbandes    16 年前

    main.m main() 函数,这是程序的入口点,它首先运行。然后它会打电话来 UIApplicationMain() ,它执行特定于操作系统的应用程序设置,并加载主界面生成器 .xib 包含应用程序代理实例的文件。

    也就是说,没有 主.m