解释iOS构建和编译?

解释iOS构建和编译?,ios,compiler-construction,Ios,Compiler Construction,我是iOS开发人员(Java本机),对应用程序的编译方式有点困惑。我假设它来自Supporting Files文件夹中的main.m文件,该文件将命令传递给AppDelegate。然后根据应用程序的状态(如didfishlaunchwithoptions,或applicationWillResignActive),它将以该方法运行命令。 因此,如果像我的一样使用选项完成启动将窗口设置为另一个文件-WXController,例如,它然后将控制权传递给WXController,并在那里以“while

我是iOS开发人员(Java本机),对应用程序的编译方式有点困惑。我假设它来自Supporting Files文件夹中的
main.m
文件,该文件将命令传递给
AppDelegate
。然后根据应用程序的状态(如
didfishlaunchwithoptions
,或
applicationWillResignActive
),它将以该方法运行命令。
因此,如果像我的
一样使用选项完成启动
窗口设置为另一个文件-
WXController
,例如,它然后将控制权传递给
WXController
,并在那里以“
while loop-esque
”的方式运行所有方法


我的理解是否接近编译和构建的实际情况?

您的假设是错误的。但Java的情况并非如此

如果您对构建项目时发生的事情感兴趣,可以在项目文件上单击Xcode(通常是“文件”菜单中最上面的部分,除非您使用的是工作空间)。这些是项目设置。它的一个标签叫做“构建阶段”。在这里,您可以看到列出的编译器将执行的操作以及顺序


但是,让我们简单介绍一下在C和C类似的编程语言中是如何工作的:有源文件和头文件。通常,所有源文件(在objective-C中包含实际代码的文件是.m文件)都是按随机顺序编译的(ofc.有一个顺序,但这并不重要,因为源文件不应该相互引用!)。头文件(.h-files)用于告诉编译器应该包含在其他源文件中的所有变量和方法。在编译源代码时,这些信息将作为参考,然后用于将所有内容链接在一起。编译完所有内容后(结果是对象文件*.o),从头文件链接器标志生成的引用将用于将所有对象链接在一起

你的问题有点混乱。您询问构建步骤,并描述程序流程。您可能需要详细阅读“UIViewController”、“UIView”、“selector”、“UIEvent”、“NSNotification”和“delegation”的概念,以便更好地了解常见的类和模式。@直到我认为这对他没有帮助为止。他的问题是关于编译器的,为了理解这一点,他必须进入一个较低的层次,到编译器层次。视图控制器、视图、选择器、事件和通知等常规模式的级别高于此级别。@NilsZiehn您可能完全正确。我猜他实际上对程序流程的细节感兴趣。你猜他实际上对编译和链接的细节感兴趣。头文件在链接器阶段不起任何作用;在编译源文件之前,预处理器会将头文件复制到源文件中。