После еще нескольких копаний похоже, что класс TTPickerTextField
, в котором находится этот код, является косвенным подклассом UITextField
.
. Таким образом, он поддерживает P * 1005.* Свойство делегата, которое не соответствует протоколу TTPickerTextFieldDelegate
, где объявлен метод textField:didAddCellAtIndex:
.
Я пришел к выводу, что этот код - просто лень.Нет причин, по которым свойство делегата UITextField
должно было бы иметь поддержку, что делает этот запутанный, подверженный ошибкам код необходимым.
Мой собственный подход состоял бы в том, чтобы оставить свойство делегата UITextField
в покое и добавитьмое собственное свойство в моем конкретном подклассе, который обрабатывал определенные методы делегата.
Просто чтобы уточнить - «решение», о котором я говорил в этом вопросе, исправляет ошибку компилятора, но генерирует предупреждение о том, что метод не может быть найдени предполагается, что вернуть идентификатор.Это то, что исходный код «решал», но это работало только в GCC.Больше не с LLVM 2.0.
Последнее редактирование, я обещаю:
Мое окончательное решение для борьбы с этой ленью и избавления от предупреждений и ошибок - отвратительный хак:
[(id <TTPickerTextFieldDelegate>)self.delegate textField:self didAddCellAtIndex:(_cellViews.count - 1)];
Приведите UITextField
s делегата к id
, который соответствует TTPickerTextFieldDelegate
, и затем вызовите метод напрямую.
Пожалуйста, не ленитесь: (