ios – Swift委托和可选

ios – Swift委托和可选,第1张

概述我已经宣布了这个协议 protocol ReactorDelegate { func ReactorUpdateUI()} 在我的模型中,我有一个委托可选属性并检查是否不是nill,解包它以调用VC提供的协议方法. var delegate:ReactorDelegate? if delegate {delegate?.ReactorUpdateUI()} 我的VC遵循协议并具有Reac 我已经宣布了这个协议

protocol ReactorDelegate {  func ReactorUpdateUI()}

在我的模型中,我有一个委托可选属性并检查是否不是nill,解包它以调用VC提供的协议方法.

var delegate:ReactorDelegate? if delegate {delegate?.ReactorUpdateUI()}

我的VC遵循协议并具有ReactorUpdateUI方法

class VC_Reactor: UIVIEwController,ReactorDelegate

我正在尝试在VC中创建模型的实例,但这失败了

let reactorCore=Reactor()

错误:’Reactor’不能用'()’构建,让我知道并非所有属性都有初始值.

我可以通过在VC中使我的委托隐式地解包可选来解决它
var reactorCore:反应堆!
并在VIEwDIDLoad中使用自定义init:reactorCore = Reactor(delegate:self)

如果我声明delegate属性是可选的,我不明白为什么我需要一个自定义init(委托:ReactorDelegate).

解决方法 您需要在委托协议中将该方法标记为可选:

@objc protocol ReactorDelegate {    optional func ReactorUpdateUI()}

然后将您的类标记为@objc并在方法上使用可选链接:

delegate?.ReactorUpdateUI?()

注意:在编写协议时,最简单的方法是保留所需的所有内容并将类中的方法存根,然后当一切正常时,返回并使您想要的选项成为可选项.您获得的错误消息非常不透明,因此您一次处理的问题较少.

总结

以上是内存溢出为你收集整理的ios – Swift委托和可选全部内容,希望文章能够帮你解决ios – Swift委托和可选所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005602.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存