原文:https://www.jianshu.com/p/5f34368b4879
当我们在写OC项目的时候,会有一个main.m文件,里面有一个main函数,在这个函数中唤醒app。
main函数作为程序启动后的第二个函数被调用,然后在main函数中再启动UIApplication,并绑定AppDelegate。
Swift项目中的main函数为何隐藏
当我们创建一个Swift项目的时候,发现没有了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文件
细心的同学会发现AppDelegate文件中多了个@main
以前是@UIApplicationMain
的标志,启动app并打断点,发现main函数其实还是存在的
应该是苹果认为我们并不需要自行配置app入口,所以干脆简化了项目配置,使用更加简单的方式启动应用,但是有时候我们可能需要自己配置入口,例如创建UIApplication的子类时
main.swift
如果你希望像以前一样使用main.swift文件启动项目:
首先创建一个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文件,重新运行项目即可。