5 Key Differences Between Opaque Types And Protocols In Swift