为什么不调用 iOS 中的自定义委托

Why custom delegate in iOS is not called

我正在尝试使用 swift 中的 playground 创建自定义委托。但是 doSomething 方法没有通过回调调用。 似乎 delegate?.doSomething() 不会触发 XYZ class doSomething 方法。 提前致谢!

import UIKit

@objc protocol RequestDelegate
{
    func doSomething();

      optional  func requestPrinting(item : String,id : Int)
}


class ABC
{
    var delegate : RequestDelegate?
     func executerequest() {

        delegate?.doSomething()
        println("ok delegate method will be calling")
    }
}   

class XYZ : RequestDelegate
{  
    init()
    {
        var a  = ABC()
        a.delegate = self
    }

     func doSomething() {
       println("this is the protocol method")
    }
}    

var a = ABC()
a.executerequest()

It seems that delegate?.doSomething() does not fire to the XYZ class doSomething method.

没错。 class ABC 有一个可选的 delegate 属性,但是值 属性 未设置。所以 delegatenil 因此 可选链接

delegate?.doSomething()

什么都不做。您还定义了一个 class XYZ 但是 没有创建那个 class 的任何实例。

如果将 a 的委托设置为 XYZ 的实例,则 它会按预期工作:

var a = ABC()
a.delegate = XYZ()
a.executerequest()