Swift委托(contactDelegate)解释

Swift Delegate (contactDelegate) explanation

我对委托的含义进行了很多研究,但不知何故我的理解与这个解释不符。这是来自教程:

    physicsWorld.contactDelegate = self

这是他的解释:"This sets up the physics world to have no gravity, and sets the scene as the delegate to be notified when two physics bodies collide."

我认为委托只是一个使用协议的 class。有人对此有不同的解释吗?那条线到底是做什么的?谢谢。 (忽略引力部分,还有一行代码)

委托一个协议,有时也称为"delegate protocol"。包含引用的代码行 的 class 成为委托 并获取相关 协议 的消息。 physicsWorld 将联系其代表以通知它发生碰撞。如果实现了委托方法(即控制器符合委托协议),它可以在收到通知时采取适当的行动。

清除了吗?

根据 PhysicsWorld class 的 Swift 文档:

contactDelegate Property

A delegate that is called when two physics bodies come in contact with each other.

因此当我们看到这条线时:

physicsWorld.contactDelegate = self

我们正在 physicsWorld 实例上设置 contactDelegate 属性 以便当两个物理对象发生碰撞时将调用某些方法,即委托。

通过分配 self,我们将响应物理对象碰撞的责任委托给 class (GameScene)。

override func didMoveToView(view: SKView)

因为我们在继承自 SKScene class 的 GameScene class 中覆盖了这个方法,所以我们实际上是在说:

"Don't use SKScene didMoveToView() use this GameScene version of didMoveToView()"(因为self指的是GameSceneclass)。

So the function "didBeginContact()" is a delegate? and contactDelegate always has to be the class that's going to implement the "didBeginContact()" function (or any other function from the delegate protocol)?

我假设 didBeginContact() 方法调用设置为 contactDelegate 的方法 属性。

Java 没有代表。委托就像一个变量,除了它存储一个方法。您可以使用该变量然后调用该方法。 (如果你知道一些 C,它是一个指向函数的指针)

This 在我第一次遇到委托时帮助我理解了委托。