Xcode 12支持在UIKit或基于AppKit的应用程序中使用@main代替@UIApplicationMain或@NSApplicationMain。来源
新创建的Xcode 12项目现在使用@main
来指示应用程序的起点。
阅读一些博客文章,其中说@main
取代了@UIApplicationMain
,为了使其正常工作,需要定义一个静态main
方法。然而,在main
中没有AppDelegate
方法,并且应用程序的启动没有任何问题。
用Xcode 12创建的macOS项目
import Cocoa
@main
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ aNotification: Notification) {}
func applicationWillTerminate(_ aNotification: Notification) {}
}
用Xcode 12创建的iOS项目
import UIKit
@main
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { return true }
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {}
}
发布于 2020-11-14 14:49:17
UIApplicationMain首先实例化UIApplication
并保留其实例作为共享应用程序实例(UIApplication.shared
),然后实例化标记为@Main
的应用程序委托为应用程序实例的委托。main
方法以类型法的形式存在。
发布于 2020-11-14 09:22:50
@main
是一个属性,表示这是应用程序的入口点,不可能有多个结构。
https://stackoverflow.com/questions/64831598
复制相似问题