HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – Swift委托和可选大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我已经宣布了这个协议

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委托和可选所遇到的程序开发问题。

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

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。