You're correct, part of the problem is indeed that, though I'm not completely sure myself.
But how do things like EmptyView work? How do they conform to the View protocol without having a body property (that must also be a View)?
Re:Static Types in SwiftUI
by DelightOne on Tuesday November 05, 2019 @06:58PM
(#21458286)
I think it has a body type [0] (Never). And since a default implementation is provided [1] the compiler probably does not complain. This default body implementation does likely not draw anything, but that's just guessing.
[0]: https://developer.apple.com/documentation/swiftui/emptyview/... [1]: https://developer.apple.com/documentation/swiftui/view/32785...
It's because of Body's type:
public struct EmptyView: View {
@inlinable public init()
public typealias Body = Never
}
Because Body is Never, you can't access EmptyView's body property.Can we write a protocol + type like that?
https://forums.swift.org/t/how-do-views-like-emptyview-confo...
I don't see why not. When I trick it into calling `body` on an EmptyView, I get this runtime failure:
> Thread 1: Fatal error: body() should not be called on EmptyView.
So I don't think the implementation is doing anything beyond the fatalError() call from that forum thread. At least not at this point in time.
Or it might be something else.