Создайте абстрактный суперкласс, от которого наследуются все ваши общие классы контроллеров. Этот абстрактный супер может реализовать необходимый протокол (ы), и относительно общие или очень специфичные под- или под-подклассы могут переопределять.
Рассмотрим различные мнения / респондентов в iPhone SDK.
Класс UIResponder предлагает обработку событий.
Подклассы UIView для добавления функциональности рисования.
UIControl подклассы UIView для добавления различных элементов управления, как поведение.
Затем есть UIButton, UITextField, UISlider и т. Д. ... все они подкласса UIControl для добавления их специфических функций.
Если вы внимательно посмотрите, протоколы NSCoding (и NSObject) объявляются поддерживаемыми различными классами в иерархии, и более конкретные подклассы переопределяются по мере необходимости.