为什么不调用 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
属性,但是值
属性 未设置。所以 delegate
是 nil
因此 可选链接
delegate?.doSomething()
什么都不做。您还定义了一个 class XYZ
但是
没有创建那个 class 的任何实例。
如果将 a
的委托设置为 XYZ
的实例,则
它会按预期工作:
var a = ABC()
a.delegate = XYZ()
a.executerequest()
我正在尝试使用 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 classdoSomething
method.
没错。 class ABC
有一个可选的 delegate
属性,但是值
属性 未设置。所以 delegate
是 nil
因此 可选链接
delegate?.doSomething()
什么都不做。您还定义了一个 class XYZ
但是
没有创建那个 class 的任何实例。
如果将 a
的委托设置为 XYZ
的实例,则
它会按预期工作:
var a = ABC()
a.delegate = XYZ()
a.executerequest()