Profiles automatically create instances of globally-registered protocols that they can use. You do not need to create instances of protocols manually. You usually do not interact with the protocols of a profile directly either, as you can access the most part of the functionality of a protocol using members from the profile class.