Протокол
используется для объявления функциональности, которая будет использоваться многими объектами или классами.
Рассмотрим пример. Вы разрабатываете базу данных о птицах. Таким образом, у вас будет птица в качестве базового класса, и вы унаследуете птицу, чтобы создать свою собственную птицу. так что в птичьем классе у вас будут не какие-то определения, а некоторые виды поведения, которые должны будут унаследовать все птицы. Как птицы могут летать, так и есть крылья. Итак, что вы будете делать, вы будете объявлять все эти поведения и реализовывать их в своих производных классах. Потому что могут быть птицы, которые летают высоко и на большие расстояния, а некоторые летают на короткие расстояния.
Для этой цели используется @protocol. Используя @protocol, вы объявляете некоторые варианты поведения. И используйте эти поведения в других ваших классах для реализации поведения.
Это позволит избежать накладных расходов на объявление одного и того же метода снова и снова и обеспечит реализацию поведения в вашем классе.