Бывают случаи, когда вы хотите быть делегатом для другого объекта, но при этом вы можете получать предупреждения компилятора, потому что вы явно не заявляете, что ваш класс соответствует требуемым методам протокола. Как уже упоминалось, одним из столпов объектно-ориентированного программирования является скрытие информации . Не желательно объявлять в своем заголовке, что класс реализует определенный протокол, потому что вы нарушаете этот принцип. Это также открывает ваш класс для злоупотребления или использования таким образом, для которого он не предназначен, потому что делает эту информацию известной другим классам. Объявив частную категорию в файле .m и сообщив компилятору о своем намерении реализовать этот протокол, вы не только избавляетесь от предупреждений, которые могут возникнуть, но вы фактически делаете свой код самодокументирующим.