好吧,我对obj-c可可全新,所以这可能是显而易见的,但这里有:
我一直在从命令行应用程序转向可可应用程序,学习如何在Xcode中使用objective-c.我不太了解的一件事是AppDelegate的作用以及它如何连接到main.m
看起来你可以将你的整个程序放在appdelegate中它运行正常,你甚至不需要main.m,但不是相反,如果你正在制作一个可可应用程序你必须至少有appdelegate.
我已经做了很多PHP web开发和命令行工具,所以我想我正在寻找的是程序首先执行的文件,旨在“控制”其余部分.
任何人都可以帮助我理解Cocoa程序中发生了什么,AppDelegate和main.m是如何相关的,以及程序的流程应该是什么?
解决方法
许多面向对象系统(如Cocoa)的一个关键特性是
“inversion of control”,这基本上意味着框架正在运行所有内容,并且您编写的任何代码都在其控制之下.
因此,与PHP不同,您不会编写在启动时执行的代码.您要做的是为应用程序委托,控制器,视图和其他对象定义方法,并让框架在需要时调用这些方法.在整个计划中,你永远不会看到整体的“控制流”;你只会看到它作为控制流入你的程序部分.
这可能会让人感到困惑,因为你试图弄清楚如何欺骗框架按照你期望的顺序调用你的代码,但从长远来看它实际上会让事情变得更容易,因为你可以信任框架到为你照顾好很多东西.
在Cocoa应用程序中,应用程序的许多逻辑实际上都在视图控制器中,而不是在应用程序委托中.应用程序委托通常处理启动和关闭职责,但其他对象在启动和关闭之间完成大部分工作.所以不要试图将所有东西都挤进app委托.