原文:http://www.reibang.com/p/5f34368b4879
當我們在寫OC項目的時候箍铭,會有一個main.m文件次兆,里面有一個main函數,在這個函數中喚醒app。
main函數作為程序啟動后的第二個函數被調用慢蜓,然后在main函數中再啟動UIApplication,并綁定AppDelegate朽色。
Swift項目中的main函數為何隱藏
當我們創(chuàng)建一個Swift項目的時候酱酬,發(fā)現(xiàn)沒有了main.swift文件诈豌,這是我們慌了仆救,為什么呢?哈哈哈矫渔,官方的解釋是這樣的
“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文件
細心的同學會發(fā)現(xiàn)AppDelegate文件中多了個@main
以前是@UIApplicationMain
的標志顿痪,啟動app并打斷點,發(fā)現(xiàn)main函數其實還是存在的
應該是蘋果認為我們并不需要自行配置app入口油够,所以干脆簡化了項目配置蚁袭,使用更加簡單的方式啟動應用,但是有時候我們可能需要自己配置入口石咬,例如創(chuàng)建UIApplication的子類時
main.swift
如果你希望像以前一樣使用main.swift文件啟動項目:
首先創(chuàng)建一個swift文件揩悄,命名為main
main.swift中代碼如下
import Foundation
import UIKit
UIApplicationMain(CommandLine.argc, CommandLine.unsafeArgv, nil, NSStringFromClass(AppDelegate.self));
寫好main.swift后,需要把AppDelegate.swift中的@main注釋掉,或者刪除AppDelegate.swift新建一對OC版的AppDelegate文件鬼悠,重新運行項目即可删性。