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