[英]Why does the type not conform to protocol?
我們有以下代碼:
protocol ItemView {
var image: UIImage? { get set }
}
class BaseController<T: UIView where T: ItemView>: UIViewController {
var itemView = T()
}
class ConcreteItemController: BaseController<UIImageView> {
}
對於BaseController,我收到一條錯誤消息,說“類型”UIImageView“不符合協議”ItemView“”。
但為什么?
我執行此操作時會顯示相同的錯誤消息:
typealias ConcreteItemController = BaseController<UIImageView>
我真的在這里遺漏了一些東西......為什么UIImageView不符合ItemView協議? 它有一個可選的圖像屬性..那么問題出在哪里?
UIImageView
沒有聲明它符合ItemView
。 因為swift是一種嚴格類型的語言,它不會推斷出與協議的一致性,因為某些類型只會偶然符合。 你可以這么說:
protocol ItemView {
var image: UIImage? { get set }
}
class BaseController<T: UIView where T: ItemView>: UIViewController {
var itemView = T()
}
extension UIImageView: ItemView {}
class ConcreteItemController: BaseController<UIImageView> {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.