Согласно Свифта документации для PhysicsWorld class:
contactDelegate недвижимости
делегат, который вызывается, когда два физика тела вступают в контакт с друг друга.
Поэтому, когда мы видим строку:
physicsWorld.contactDelegate = self
Мы устанавливаем свойство contactDelegate на экземпляре physicsWorld так, что, когда два объекта физики сталкиваются некоторые метод будет вызываться, т.е. делегата.
При назначении self
мы делегируем ответственность за реагирование на столкновения физических объектов с классом (GameScene).
override func didMoveToView(view: SKView)
Поскольку мы перекрывая этот метод в классе GameScene, который наследует от класса SKScene мы, по сути говоря:
«Не использовать SKScene didMoveToView()
использовать данную GameScene версию didMoveToView()
» (потому что сам относится к классу GameScene).
Значит, функция «didBeginContact()» является делегатом? и contactDelegate всегда должен быть классом, который собирается реализовать функцию doBeginContact() (или любую другую функцию из протокола делегата)?
Я предполагаю, что метод didBeginContact() вызывает метод, заданный свойством contactDelegate.
В Java нет делегатов.Делегат подобен переменной, за исключением того, что хранит метод. Вы можете использовать эту переменную, чтобы вызвать метод. (Если вы знаете какой-то C, это указатель на функцию)
This помог мне понять делегатов, когда я впервые встретил их.
Я предполагаю, что это слово делегат подходит ко мне. Я действительно ненавижу соглашение об именах Свифта, особенно для методов. Итак, функция «didBeginContact()» является делегатом? и contactDelegate всегда должен быть классом, который собирается реализовать функцию doBeginContact() (или любую другую функцию из протокола делегата)? и, наконец, есть ли эквивалентное слово для делегата в java или любых языках семейства C? – user3758745