WWDC 19
Modern Swift API Design
Your most important goal as an API designer: Clarity at the point of use
Make it obvious when reading the API what it’s doing and how to use it correctly
Apple will not use prefixes in new Swift-only frameworks
Be careful – imported names are brought into a single namespace, so a very general name will require your users to manually disambiguate names in case of conflicts
Structs vs. classes:
- both have their roles
- prefer structs by default over classes, unless you have a good reason
- use classes if you need the reference semantics, reference counting and deinitialization
- use classes if the value is held centrally and shared
- use classes if there is a separate notion of identity and equality
RealityKit: entities are references, handles into shared objects that live inside the rendering engine, so classes make sense
Objects used to configure entities – locations, materials etc. – are mostly structs