小编RMe*_*uws的帖子

Swift委托和可选

我已经宣布了这个协议

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属性是可选的,我不明白为什么我需要自定义.

delegates optional ios swift

3
推荐指数
1
解决办法
6935
查看次数

标签 统计

delegates ×1

ios ×1

optional ×1

swift ×1