Swift – 分段错误,符合协议

Swift – 分段错误,符合协议,第1张

概述我上课了 class Presenter<T: UIViewController where T: protocol<ViewInput, ViewController>>: NSObject{ override init() { super.init() Layer.sharedInstance.service.addListener(self) }} 我希望P 我上课了

class Presenter<T: UIVIEwController where T: protocol<VIEwinput,VIEwController>>: NSObject{  overrIDe init()  {    super.init()    Layer.sharedInstance.service.addListener(self)  }}

我希望Presenter符合另一个协议并编写扩展:

extension Presenter: OneMoreProtocol{  func doSomething()  {    self.update()  }}

但是这个输出错误:为源文件发送IR …. / Presenter.swift(分段错误)

该协议看起来:

@objc protocol OneMoreProtocol: AnyObject{  optional func doSomething()}

因此,如果我删除扩展错误:在这种情况下上面描述的addListener抛出此错误:
参数类型’Presenter’不符合预期类型’OneMoreProtocol’

如何以正确的方式进行整合?

解决方法 现在我想我更了解这个问题.您添加的新协议标有@objc属性.然后,您必须使用@objc在扩展Presenter中标记方法,如下所示:

@objc func doSomething()

但是你现在面临一个更大的问题:“泛型类的扩展中不支持@objc.”

我不确定你到底想要实现什么,但一个简单的技巧就是协议扩展.

protocol OneMoreProtocol{    func doSomething()}extension OneMoreProtocol {    func doSomething() {}}

现在你有一个doSomething的空实现,所以你不必在采用协议的地方编写实现.

总结

以上是内存溢出为你收集整理的Swift – 分段错误,符合协议全部内容,希望文章能够帮你解决Swift – 分段错误,符合协议所遇到的程序开发问题。

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

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

原文地址: https://outofmemory.cn/web/999890.html

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

发表评论

登录后才能评论

评论列表(0条)

保存