在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.png
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注釋掉或者刪掉
注釋掉.png
重新運行項目,app就能正常啟動了。