У вас есть несколько вариантов, но вы на правильном пути.
ObjC не поддерживает это напрямую, поэтому подклассы для реализации протокола - лучший способ проверить его при компиляции.
«Тайная» реализация метода в базовом классе и утверждение - это то, что я делаю, чтобы подтвердить, что подкласс правильно распределен по подклассам во время выполнения.Некоторые люди испытывают смешанные чувства по поводу утверждений или должны оставить их активными, так что это не всегда хорошее решение.
Вы также можете заставить подклассы использовать определенный конструктор класса и последовательность инициализации, а затем проверить, что они реализовали все необходимое, прежде чемвозвращая экземпляр, в случае, если предупреждения компилятора не обрезают его.
Но в ObjC отсутствуют некоторые функции языка, которые позволяют клиентам выстрелить себе в ногу, или обойти то, что они хотят, так что ... вы не должнызацикливайтесь на его принудительном выполнении.
примечание: исключения являются очень редкими (и немного небезопасными) в ObjC.