Почему конфликтует функция?

Есть две функции с одним именем и разным набором параметров.

При этом у них возникает конфликт:

99b3afda58ce4c2a85d5791078a19ebe.png

Голову сломал - не могу понять, как такое может быть? Помогите, пожалуйста, разобраться.
  • Вопрос задан
  • 195 просмотров
Пригласить эксперта
Ответы на вопрос 1
ManWithBear
@ManWithBear
Swift Adept, Prague
Коротко: ObjC не поддерживает перегрузку методов, поэтому необходимо использовать различные имена для методов.

Подробнее: Когда вы наследуете что-то от класса написанного на ObjC (в вашем случае это наверное UIViewController), класс автоматически становится совместимым с ObjC. Соответсвенно появляется 2 различных метода с одним и тем же селектором. Что плохо и вызывает ошибку компиляции.

Возможные выходы из проблемы:
1) Просто переименовать второй метод.
2) (Если это всё таки UIViewController) Вынести логику приложения из её контроллера в модель. Соответсвенно создать класс, который будет производить все вычисления и не наследовать ничего от ObjC.

ЗЫ Поэтому я считаю, что учить swift без objc бесполезно. Вам все равно приходиться писать с логикой objc, только словами свифта.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы