如何在Swift中执行委派的基本实现?

Pau*_*ron 8 delegates ios swift swift2

我正试图绕过代表团,并将其剥离到基本实现.我想出了这个,但委托函数永远不会被调用.谁能解开一些光明?

protocol MyDelegate{
    func delegatedFunction (a:String)
}

class DelegatorClass {
    var delegate: MyDelegate?
    func callDelegate() {
        delegate?.delegatedFunction("hello")
    }
}

class DelegateClass: MyDelegate {
    func delegatedFunction (a:String){
        print(a)
    }
}
Run Code Online (Sandbox Code Playgroud)

War*_*shi 7

let myDelegatorObj = DelegatorClass()
myDelegatorObj.delegate = DelegateClass()
myDelegatorObj.callDelegate()
Run Code Online (Sandbox Code Playgroud)

点在你打电话之前你callDelegate()需要分配delegate.要检查您的代理是否正常工作,您可以DelegatorClass使用委托初始化.

class DelegatorClass {
    var delegate: MyDelegate? = DelegateClass()
    func callDelegate() {
        delegate?.delegatedFunction("hello")
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 这看起来像是要走的路.但是,我会指定第一个示例和第二个示例是激活委派的不同方法.第一个例子是大多数的,因为它允许使用委托类的不同等级,而不需要在委托者类中对其进行硬编码 (2认同)

Pau*_*w11 1

的实例DelegateClass需要将自己设置为实例的委托DelegatorClass

所以,你会得到类似的东西:

class DelegateClass: MyDelegate {
    func delegatedFunction (a:String){
        print(a)
    }

    func testFunction() {
       var delegator=DelegatorClass()
       delegator.delegate=self
       delegator.callDelegate()
    }
}
Run Code Online (Sandbox Code Playgroud)