这可能是非常基本的。但是,我不确定在下列情况下代表是否必要? 代表是否以同步方式使用?如果是,是否可以在作为委托的调用者调用的函数中调用委托方法[如下例所示]?
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()
}
}
答案 0 :(得分:0)
委托是一种设计模式,允许一个对象在特定事件发生时将消息发送到另一个对象。想象一下,对象A调用对象B来执行操作。一旦行动完成,对象A应该知道B已完成任务并采取必要的行动,这可以在代表的帮助下实现!
答案 1 :(得分:-1)
我认为这里的关键是你的问题"代表是否以同步的方式使用?"。
基本委托机制是同步的:即。被调用的委托方法将与调用者位于同一个线程上。因此,如果调用者是您的对象,那么您可以控制它发生在哪个线程上。
然而,调用者 可以 创建一个新线程,然后从中调用委托方法。因此,如果调用者不是您的,请在依赖同一线程上的调用之前仔细检查文档。