Протокол - набор правил. которым должны соответствовать подписанные под него типы данных. Протокол - это абстрактный тип данных. Т.е. это зан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]() Композиция протоколов //