Ios Swift通用类can';不分配给子类
我有A班:Ios Swift通用类can';不分配给子类,ios,swift,generics,swift3,Ios,Swift,Generics,Swift3,我有A班: class A<T: MyTypeClass> { } 如果我写下这样的话: var variable: A<MyTypeClass> = B<MyTypeClassSubclass>() var variable: A<MyTypeClass> = B<MyTypeClassSubclass>() as! A<MyTypeClass> var变量:A=B()as!A. 编译器只给出警告,应用程序在运行
class A<T: MyTypeClass>
{
}
如果我写下这样的话:
var variable: A<MyTypeClass> = B<MyTypeClassSubclass>()
var variable: A<MyTypeClass> = B<MyTypeClassSubclass>() as! A<MyTypeClass>
var变量:A=B()as!A.
编译器只给出警告,应用程序在运行时崩溃
我尝试过类型擦除,但它不起作用,因为在我的例子中,它是从A类巫婆开始的,它已经是通用的
如何解决此问题?在处理泛型类型时,Swift中既不允许超类型也不允许子类型。在子类的上下文中使用泛型时,类型必须相同。这可能有助于查看已发布的博客文章。简而言之,使这种协变是可能的(在Swift以外的语言中,如Scala),但要正确使用类型安全性是一种复杂的语言功能,Swift没有这种功能。你不能这样做。将子类与非平凡泛型混合在一起通常会使您陷入困境。通常,您应该重新设计协议或类型橡皮擦,而不是子类化来避免这种情况。
var variable: A<MyTypeClass> = B<MyTypeClassSubclass>() as! A<MyTypeClass>