Xcode 4 выдаёт мне (довольно бесполезные) ошибки об «невыполненном селекторе« xxx »», когда я пытаюсь использовать @selector (xxx) с любым методом, который фактически не определен в том же исходном файле.Ошибка исчезнет (по крайней мере, для сборки проекта), если я установлю предупреждение компилятора LLVM «Множественные типы определений для селектора» на «Нет».(Это по умолчанию для iOS, но для моего проекта он был включен.) Однако, даже если этот параметр отключен, ошибка все равно отображается в редакторе, если в диалоговом окне «Настройки сборки» установлен флажок «Включить оперативные проблемы».
Так что теперь я отключил живые выпуски, чтобы не отвлекаться, что немного разочаровывает.Мой вопрос: есть ли способ, которым я могу избавиться от ошибки, возможно, указав, какое определение селектора я хочу использовать?Или это должно даже иметь значение, то есть все ли определения метода имеют один и тот же селектор в Objective-C?Это ошибка компилятора или фиктивная настройка, которую я должен просто оставить? (А если последнее, почему он включен для функции live build в новом редакторе?)
Вот код, просто чтобы быть ясным:
if ([recognizer respondsToSelector:@selector(translationInView:)]) {
...
}
И вот ошибка:
error: unimplemented selector 'translationInView:' [-Wselector,2]
if ([recognizer respondsToSelector:@selector(translationInView:)]) {
^
Если я заменю 'translationInView:' на метод, определенный в том же исходном файле, ошибки не будет.Я импортировал заголовок, который определяет этот метод, и я попытался объявить метод в категории в этом исходном файле.Неважно.
Я оставляю предупреждение выключенным, а живая сборка сейчас продолжается, но я бы хотел найти лучшее решение для этой проблемы.По крайней мере, я хотел бы узнать, имеет ли @selector в Objective-C синтаксис для выбора конкретного определения метода, поскольку пока я нигде не нашел никаких признаков этого.
Спасибо!