Xcode 12 中的“@main”是什么意思?
What does "@main" mean in Xcode 12?
Xcode 12 includes support for using @main in place of @UIApplicationMain or @NSApplicationMain in UIKit- or AppKit-based apps. source
新创建的Xcode 12 个项目现在使用@main
指示应用程序起点。
- 这是什么意思?
- 它有什么作用?
- 应用程序现在如何启动?
阅读一些博客文章,其中提到 @main
替换了 @UIApplicationMain
,为了使其工作,需要定义静态 main
方法。但是,AppDelegate
中没有 main
方法,应用程序启动没有问题。
macOS 项目创建于 Xcode12
import Cocoa
@main
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ aNotification: Notification) {}
func applicationWillTerminate(_ aNotification: Notification) {}
}
iOS 项目创建于 Xcode 12
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>) {}
}
@main
属性表示这是app的入口,不能有多个结构
UIApplicationMain 首先实例化 UIApplication
并保留其实例作为共享应用程序实例 (UIApplication.shared
),然后实例化标记为 @Main
的应用程序委托作为应用程序实例的委托。 main
方法作为 type method.
存在
Xcode 12 includes support for using @main in place of @UIApplicationMain or @NSApplicationMain in UIKit- or AppKit-based apps. source
新创建的Xcode 12 个项目现在使用@main
指示应用程序起点。
- 这是什么意思?
- 它有什么作用?
- 应用程序现在如何启动?
阅读一些博客文章,其中提到 @main
替换了 @UIApplicationMain
,为了使其工作,需要定义静态 main
方法。但是,AppDelegate
中没有 main
方法,应用程序启动没有问题。
macOS 项目创建于 Xcode12
import Cocoa
@main
class AppDelegate: NSObject, NSApplicationDelegate {
func applicationDidFinishLaunching(_ aNotification: Notification) {}
func applicationWillTerminate(_ aNotification: Notification) {}
}
iOS 项目创建于 Xcode 12
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>) {}
}
@main
属性表示这是app的入口,不能有多个结构
UIApplicationMain 首先实例化 UIApplication
并保留其实例作为共享应用程序实例 (UIApplication.shared
),然后实例化标记为 @Main
的应用程序委托作为应用程序实例的委托。 main
方法作为 type method.