什么是快速代码执行的入口点?
在swift中没有main()
方法。 程序必须从某处开始执行。 那么swift代码执行的入口是什么?它是如何决定的?
简单Swift模块中的入口点是名为main.swift
模块中的文件。 main.swift
是唯一允许在顶层具有expression式和语句的文件(模块中的所有其他Swift文件只能包含声明)。
Cocoa Touch在UIApplicationDelegate
的实现上使用@UIApplicationMain
属性来代替main.swift
文件来标记入口点。 cocoa过去使用一个简单的叫做NSApplicationMain
的最小main.swift
文件,但是从Xcode 6.1 @NSApplicationMain
在NSApplicationDelegate
的实现上使用了@NSApplicationMain
NSApplicationDelegate
属性 。
在AppDelegate.swift
文件中,您可以看到@UIApplicationMain
。
AppDelegate是最初的入口文件。
基本上: main.m
和AppDelegate.m
在Swift
被合并到AppDelegate.swift
您可能想要阅读文件和初始化
这个例外是一个名为“main.swift”的特殊文件,它的行为非常类似于操作系统文件,但是它是用你的应用程序的源代码构build的。 “main.swift”文件可以包含顶级代码,也可以使用依赖于顺序的规则。 实际上,在“main.swift”中运行的第一行代码被隐式定义为程序的主要入口点。 这允许最小的Swift程序成为一行 – 只要该行在“main.swift”中。
在Xcode中,Mac模板默认包含“main.swift”文件,但对于iOS应用程序,新iOS项目模板的默认值是将@UIApplicationMain添加到常规Swift文件。 这会使编译器综合iOS应用程序的主要入口点,并且不需要“main.swift”文件。
或者,您可以链接Objective-C中编写的主要实现,当从Objective-C向Swift逐步迁移项目时,这是常见的。