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.
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)?