4 ms·
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 Vi
by Razengan 7y ago
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)?
- DelightOne 7y agoI 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/body https://developer.apple.com/documentation/swiftui/emptyview/... [1]: https://developer.apple.com/documentation/swiftui/view/3278523-body https://developer.apple.com/documentation/swiftui/view/32785...
- favorited 7y agoIt'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.
- Razengan 7y agoCan we write a protocol + type like that? https://forums.swift.org/t/how-do-views-like-emptyview-conform-to-the-view-protocol https://forums.swift.org/t/how-do-views-like-emptyview-confo...
- favorited 7y agoI 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.