我已经声明了这个协议
protocol ReactorDelegate {
func ReactorUpdateUI()
}
在我的模型中,我有一个可选的代理属性,检查它是否为非空,如果是,则解包它以调用VC提供的协议方法。
var delegate:ReactorDelegate?
if delegate {delegate?.ReactorUpdateUI()}
我的 VC 遵循协议并具有 ReactorUpdateUI 方法。
class VC_Reactor: UIViewController, ReactorDelegate
我正在尝试在VC中创建一个模型实例,但是这个过程失败了。
let reactorCore=Reactor()
错误:'Reactor'无法使用'()'构造,这让我知道并非所有的属性都有初始值。我可以通过在VC中使我的代理成为一个隐式解包可选类型来解决它
var reactorCore:Reactor!
,
并在ViewDidLoad中使用自定义初始化:reactorCore = Reactor(delegate:self)
我不明白为什么需要一个自定义的init(delegate: ReactorDelegate)
,如果我将代理属性声明为可选类型。