При разработке приложения для iOS с использованием Swift, я столкнулся со странной ситуацией. Когда я нажимаю кнопку запуска, чтобы запустить свое приложение iOS, оно компилируется нормально. В моем приложении iOS предусмотрена кнопка, но после ее нажатия для вызва события Touch Up Inside связанное с этой кнопкой, приложение останавливается на первой строке класса AppDelegate, все мы знаем, что класс AppDelegate является точкой входа для каждого iOS приложения, поэтому решил просто нажать кнопку Step Over, чтобы продолжить выполнение примера.
Но выполнение кода не продолжилось, оно останавливалось здесь, и приложение зависало. При нажатии кнопки «Шаг вперед» или «Продолжить выполнение программы», выполнение программы возвращалось к первой строке класса AppDelegate, и код функции обработки события не вызывался. Эта ситуация довольно сильно сбила меня с толку.
Ниже приведена полная трассировка стека сообщений об ошибках в моем случае.
-
Как исправить ошибку нераспознанного селектора, отправленного в экземпляр, при нажатии кнопки.
После расследования я наконец выяснил причину. Это связано с тем, что я подключил две функции к событию Touch Up Inside для кнопки и удалил код функции, которая была свзяна с кнопкой из файла ViewController.swift, потому что я больше не использовал его. Но связь между кнопкой и удаленной функцией все еще существует. Поэтому мне также нужно удалить связь между кнопкой пользовательского интерфейса и удаленной функцией. Выполните следующие шаги, чтобы узнать о связи между кнопкой и функциями в вашем коде.
- Нажмите кнопку Show the Project navigator (кнопка папки слева) на левой панели Xcode, чтобы отобразить все файлы проекта.
- Щелкните файл Main.storyboard, чтобы открыть его в дизайнере.
- Выберите компонент кнопки пользовательского интерфейса в дизайнере.
- Затем нажмите View —> Inspectors —> Show Connections Inspector пункт меню «Инспектор подключений» в верхней строке меню.
- После чего появится окно инспектора соединений для кнопки на правой панели Xcode. Вы можете видеть, что к событию Sent Events —> Touch Up Inside были привязаны две функции. Вы должны нажать кнопку закрытия на левой стороне неиспользуемой функции, чтобы удалить соединение.
- Теперь пересоберите свой проект Xcode, и ошибка должна быть исправлена.
- Но если вы обнаружите, что вышеуказанный метод не сработал, а ошибка все еще существует, удалите все два соединения для кнопки и снова подключите кнопку ui к нужной вам функции.