xCode 如何决定从哪个文件开始执行代码?

How does xCode decide in which file to begin code execution?

我正在使用 xCode 6 在 Swift 中编写一个简单的游戏。我在项目中有各种文件。 xCode 如何知道在执行代码时从哪里开始?在我看来,它会自动从一个文件开始,根据各种教程,我称之为 "GameViewController.swift." 但它如何决定首先使用该文件?它会扫描 UIViewController 对象的源文件并从那里开始吗?

为了让您了解 Apple 架构,这里有一个 Cocoa 应用程序示例,它也适用于 iOS Objective-C:

每个应用程序都从 main 开始,但开发人员入口点通常是 AppDelegate。这也适用于 Swift,即使 main 已从应用程序生命周期中消失.请记住,main 的存在只是为了启动应用程序或进行一些小的调整。

如果您正在使用 Storyboards,您将能够从那里设置应用程序的启动屏幕,相反,如果一切都在代码中完成 AppDelegate此时将负责:

func application(application: UIApplication, 
     didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

如果您使用故事板,则您的目标上有一个名为 "Main Interface" 的设置。这提供了一个下拉列表,您可以在其中 select 故事板文件。即 Main.storyboard。此设置将写入将在启动时加载的 Info.plist 文件。

在这个文件中,一个视图控制器被设置为初始视图控制器,并且将被首先加载。

对于 iOS,Swift 查找具有 @UIApplicationMain 属性的 class,并将其用作应用程序的委托。

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
    ...
}

使用该属性等同于调用 UIApplicationMain 函数并将 class 的名称作为委托 class 的名称传递。这反过来将处理加载您的默认故事板并加载其初始视图控制器。

如果未找到 @UIApplicationMain,Swift 将查找名为 main.swift 的文件并在其中查找名为 main 的函数并调用它。