@main
struct NewAllApp: App {
var body: some Scene {
WindowGroup {
Text("Hello world")
}
}
}
Scene
App: 多个Scene的集合
Scene: 首先WindowGroup是一个Scene,它支持多窗口,比如浏览器打开多个页面,每个页面都是一个Scene, 一个WindowGroup下的View是一致的,但可以有不同的state,除了WindowGroup,还有DocumentGroup,在macOS下可以针对Preferences场景的Settings Scene
app.swift
swiftc -o app app.swift
,然后./app
就可以运行,但因为毕竟是GUI,所以从shell run起来窗口优先级会有问题,所以通过Makefile塞进.app,然后借用finder open app。Makefile
@main
说明一下@main的情况。之前说过main.swift作为系统入口的模块,可以直接在方法以外直接写,比如
从framework的角度,设计者肯定不希望用户去调用启动代码,所以就有@main
等同于
但这里唯一有一个bug, 就是如果只有一个文件的时候swiftc会报错
2个解决办法:
App 结构
App essentials in SwiftUI - WWDC20 - Videos - Apple Developer
Scene
State
继续看视频: Data Essentials in SwiftUI - WWDC20 - Videos - Apple Developer
感觉就是cp了WPF的依赖属性, biubiubiu.
结论: 苹果就一定要多看视频,不管是WWDC还是Xcode的操作。
参考:
参考文档