【发布时间】:2019-09-29 11:20:17
【问题描述】:
以下代码抛出错误
protocol WhatA: AnyObject {
func doThat()
}
protocol WhatB: WhatA {
func doThis()
}
class SomethingA {
weak var delegate: WhatA?
}
class SomethingB: SomethingA {
weak var delegate: WhatB?
}
类型为“WhatB?”的属性“委托”不能用 输入“WhatA?”
UIKit 没有以下问题
open class UIScrollView : UIView, NSCoding, UIFocusItemScrollableContainer {
weak open var delegate: UIScrollViewDelegate?
}
open class UITableView : UIScrollView, NSCoding, UIDataSourceTranslating {
weak open var delegate: UITableViewDelegate?
}
为什么这在 UIKit 中有效? this 问题的公认答案表明这是不可能的。
【问题讨论】:
-
你不能在 UIKit 中覆盖,你可以再试一次
-
@AhemadabbasVagh 你能澄清你的评论吗?
-
我建议在这里阅读这个主题:forums.swift.org/t/…。 TL;DR:这是不安全的 Objective-C 魔法,你不能在 Swift 中做到。
-
感谢@TylerTheCompiler 将接受如果作出官方回答。
-
谢谢,但我不想将其作为答案发布,因为它只是一个链接。 @rmaddy 的回答实际上解释了它,这更好。