如何理解SwiftUI中的NavigationView声明代码

如何理解SwiftUI中的NavigationView声明代码,swift,swiftui,Swift,Swiftui,SwiftUI中的“NavigationView”声明非常混乱。(可能我不擅长Swift。)在声明中,“NavigationView”是一个结构,但初始值设定项甚至没有主体,就像协议声明一样 NavigationView声明如下所示: @available(iOS 13.0, OSX 10.15, tvOS 13.0, *) @available(watchOS, unavailable) public struct NavigationView<Root> where Root :

SwiftUI中的“NavigationView”声明非常混乱。(可能我不擅长Swift。)在声明中,“NavigationView”是一个结构,但初始值设定项甚至没有主体,就像协议声明一样

NavigationView声明如下所示:

@available(iOS 13.0, OSX 10.15, tvOS 13.0, *)
@available(watchOS, unavailable)
public struct NavigationView<Root> where Root : View {

    public init(root: () -> Root)

    public var body: _View { get }

    /// The type of view representing the body of this view.
    ///
    /// When you create a custom view, Swift infers this type from your
    /// implementation of the required `body` property.
    public typealias Body
}
@available(iOS 13.0, OSX 10.15, tvOS 13.0, *)
public struct MyNavigationView<Root> where Root:View {
    public init(root: () -> Root)
    public var body: _View { get }
    public typealias Body
}

您看到的是Swift文件的界面。与头文件类似,它向您显示该类/struct/enum/任何您可以访问的成员及其签名

所以你不应该只是复制粘贴代码然后编译它。这不是真正的代码。它只是告诉你每个成员的签名。例如,通过查看该文件,可以看出初始化器采用了
()->根
闭包

我很确定SwiftUI不是开源的,所以你很难获得它的源代码

通过使用助理编辑器,您实际上可以看到自己代码的接口。就在“副本”部分下:


好的,我明白了。非常感谢你。
"initializer requires a body"
"Expected '{' to start getter definition"
"Expected '=' in type alias declaration"