Answers:
普通Swift模块中的入口点是名为的模块中的文件main.swift
。main.swift
是唯一一个允许在顶层具有表达式和语句的文件(模块中的所有其他Swift文件只能包含声明)。
Cocoa Touch 在的实现中使用@UIApplicationMain
属性UIApplicationDelegate
而不是main.swift
文件来标记入口点。可可曾经使用了一个main.swift
简单的最小文件NSApplicationMain
,但是从Xcode 6.1开始,它在的实现上使用@NSApplicationMain
属性NSApplicationDelegate
。
main.swift
位于Supporting Files组中,并且只需将其配置为即可NSApplicationMain
。
main.swift
。
在AppDelegate.swift
文件中,您可以看到@UIApplicationMain
。
AppDelegate是初始条目文件。
基本上:main.m
并且AppDelegate.m
被合并Swift
到AppDelegate.swift
您可能需要阅读文件和初始化
例外情况是一个名为“ main.swift”的特殊文件,其行为与游乐场文件非常相似,但使用您应用程序的源代码构建。“ main.swift”文件可以包含顶层代码,并且依赖于顺序的规则也适用。实际上,将在“ main.swift”中运行的第一行代码隐式定义为程序的主要入口点。只要最小的Swift程序在“ main.swift”中,它就可以是一行。
在Xcode中,Mac模板默认包含“ main.swift”文件,但对于iOS应用,新iOS项目模板的默认设置是将@UIApplicationMain添加到常规Swift文件中。这将导致编译器为您的iOS应用程序合成一个主入口点,并消除了对“ main.swift”文件的需求。
另外,您可以链接以Objective-C编写的main的实现,这在将项目从Objective-C逐步迁移到Swift时很常见。
在Swift应用程序中,具有以下属性:
@UIApplicationMain
(可可触摸)@NSApplicationMain
(可可)告诉快速编译器应用程序的入口在哪里。
swift编译器的作用是创建一个main
函数,该函数基本上与Objective-C应用程序相同,并将此方法视为应用程序的切入点(在应用程序启动时调用的第一个方法)。
如果您想了解更多有关swift编译器Main
如何处理属性,操作系统如何知道应用程序的入口点的信息,建议您阅读以下文章:了解iOS应用程序入口点
在Swift 5.3中,有一个新@main
属性可以让您控制入口点在项目中的位置,而不仅仅是main.swift
。只有一个主条目,而没有一个main.swift
文件和一个属性@main
。有关更多详细信息,请参见https://github.com/apple/swift-evolution/blob/master/proposals/0281-main-attribute.md。
@main
struct App {
static func main() {
print("Starting.")
}
}
main.swift
任何地方都找不到文件。该文件的位置在哪里?