在OC项目中main
函数作为程序启动后的第二个函数被调用,然后在main函数中再启动UIApplication
,并绑定AppDelegate
创建过Swift项目会发现,项目中没有一个名为main.swift
的入口没有了?官方文档的说法是这样的:
In Xcode, Mac templates default to including a “main.swift” file, but for iOS apps the default for new iOS project templates is to add @UIApplicationMain to a regular Swift file. This causes the compiler to synthesize a mainentry point for your iOS app, and eliminates the need for a “main.swift” file.
意思是,Swift项目中添加了@UIApplicationMain
到swift文件中,使得编译器合成了一个app入口,所以不需要main.swift
文件
在AppDelegate
文件中多了个@UIApplicationMain
的标志,启动app并放置断点,会发现其实main
函数还是存在的。
main.swift
如果通过自行配置入口的方式来创建一个UIApplication
子类,那么就要创建一个main.swift
文件
首先创建一个swift文件,命名为main
main.swift
中代码如下
import Foundation
import UIKit
UIApplicationMain(Process.argc, Process.unsafeArgv, NSStringFromClass(UIApplication), NSStringFromClass(AppDelegate))
写好main.swift
之后,还需要把AppDelegate
中的@UIApplicationMain注释掉或者删掉
重新运行项目,app就能正常启动了。