代表是否必要?

时间:2018-03-23 05:09:21

标签: ios swift design-patterns

这可能是非常基本的。但是,我不确定在下列情况下代表是否必要? 代表是否以同步方式使用?如果是,是否可以在作为委托的调用者调用的函数中调用委托方法[如下例所示]?

class FooViewController: UIViewController {

    func login() {
       let loginHelper = LoginHelper()
       loginHelper.fooDelegate = self
       loginHelper.shouldEnableLogin()
    }

    func enableLogin() {
       // Do some UI updates
    }

    func reset() {
       // Clear some values in the views
    }
}

class LoginHelper {
    weak var delegate: fooDelegate?

    func shouldEnableLogin() {
       //clear some text views
        delegate.reset()
        //do some validation, synchronous
        delegate.enableLogin()
    }
}

2 个答案:

答案 0 :(得分:0)

委托是一种设计模式,允许一个对象在特定事件发生时将消息发送到另一个对象。想象一下,对象A调用对象B来执行操作。一旦行动完成,对象A应该知道B已完成任务并采取必要的行动,这可以在代表的帮助下实现!

答案 1 :(得分:-1)

我认为这里的关键是你的问题"代表是否以同步的方式使用?"。

基本委托机制是同步的:即。被调用的委托方法将与调用者位于同一个线程上。因此,如果调用者是您的对象,那么您可以控制它发生在哪个线程上。

然而,调用者 可以 创建一个新线程,然后从中调用委托方法。因此,如果调用者不是您的,请在依赖同一线程上的调用之前仔细检查文档。