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委托和可选所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)