Курс 3, видео 19 “Pause button action” - Swift 2 >> Swift 3

swift
spritekit

#1

Здравствуйте!

Курс 3 изначально рассчитан на Swift 2.0, у меня последний, на сегодня, Xcode, т. е. Swift 3.1.
До этого, удавалось исправлять все моменты связанные с разницей версий, но в уроке 19 столкнулся с проблемой, которую не знаю как преодолеть. Речь идет о передаче информации о нажатии клавиши Pause из одного файла в другой, через функцию.
Подскажите, что нужно исправить по сравнению с версией в видео?

При попытке сделать всё в точности как в видео, появляются 2 ошибки и Xcode подсказывает как возможно решить проблему.

Делаю как он говорит.

Ошибки исчезают, и в итоге, при нажатии на кнопку «пауза» программа падает с ошибкой Signal SIGABRT, и следующим выводом в консоли:


2017-07-22 17:08:12.309 SpaceGame[7631:2074477] -[SpaceGame.GameViewController pauseButtonPressed:]: unrecognized selector sent to instance 0x7f973b70ad80
2017-07-22 17:08:12.313 SpaceGame[7631:2074477] *** Terminating app due to uncaught exception ‘NSInvalidArgumentException’, reason: ‘-[SpaceGame.GameViewController pauseButtonPressed:]: unrecognized selector sent to instance 0x7f973b70ad80’


Знаний в Swift еще мало (изучение нельзя назвать с нуля, но около того), поэтому очень смутно предполагаю, что что-то не так с sender.


#2

А вы правильно переписали то что было в курсе?а то вы немножко ерунду пишите


#3

Спасибо. Ваш ответ косвенно подтолкнул меня к решению проблемы. Делал я всё по уроку правильно, но дело в том, что до этого урока весь код писался в файле GameScene.swift, что называется с нуля. А в этом уроке добавление кода происходило в файл GameViewController.swift, который уже был заранее создан Xcode`ом. Соответсвенно в видеоуроке файл версии 2, а у меня версии 3. Не особо еще понимая, я пытался внести изменения для 2-й версии в свой файл 3-й версии.

В итоге, решилось все тем, что я взял функцию viewDidLoad из файла GameViewController.swift версии свифта 2.0 (который можно скачать из урока) и всё получилось, правда все-равно, небольшие изменения пришлось внести.

Единственный грустный вывод из всего этого: как-то уже хотелось бы перейти от тупого повторения к разумным действиям и все-таки сделать все это в файле свифта 3-й версии, так как получается, что я так и не понял, в чем там были ошибки. Буду учиться дальше… :slight_smile:


#4

Молодец что разобрался! Ничего, все прийдет!все начинали когда-то