Хотя вы можете создавать произвольные селекторы, используя @selector(somethingHere:)
, вы не можете вызывать произвольные методы для переменной id
без предупреждения компилятора.Компилятор все равно проверит, что вызываемый вами метод / селектор был определен где-то для класса или категории.
Вам необходимо включить соответствующий заголовок, чтобы компилятор знал, что есть объекты/ классы в системе, которые могут реагировать на этот метод, в противном случае вы могли бы неправильно набрать селектор и никогда не знать об этом.
edit:
OK Теперь я вижу, что вы реализуете делегат.В этом случае вам нужно объявить протокол с соответствующими методами и использовать тип id<ProtocolName>
для вашего делегата.Тогда ваш класс должен быть объявлен как реализующий этот протокол.