Протокол - набор правил. которым должны соответствовать подписанные под него типы данных.
Протокол - это абстрактный тип данных. Т.е. это зан7чит не существует явных экземпляров этого типа, а сущетвуют только подписанные под этот тип.
НАбор правил декларируется именно в протоколе.
protocol fullyName{ var fullName: String { get } } struct Person: fullyName { var fullName: String var age: Int } class Company: fullyName { var fullName: String
init(fullName: String) { self.fullName = fullName } }
Можно создавать массивы м типом протокола. И пихать туда классы соответсвующими этому протокоу
var clients = [fullyName]()
Композиция протоколов