ジェネリック型のクラスがあり、ジェネリック型にはサブクラス型の制約があります。私は、試してみて、メソッドにクラスのインスタンスを渡しますが、次のコンパイル時のエラーで終わる:SomeType
があることが保証されているのでジェネリックサブクラスの型制約を持つオブジェクトをメソッドに渡すときにコンパイル時にエラーが発生する
class A: NSObject {
func testB(b: B<NSObject>) {
}
}
class B<SomeType: NSObject>: NSObject {
func test() {
let a = A()
a.testB(b: self) // <----- The error noted above is shown here
}
}
:
以下Cannot convert value of type 'B<SomeType>' to expected argument type 'B<NSObject>'
は簡単な例でありますNSObject
のサブクラスを使用すると、B<SomeType>
をB<NSObject>
に変換して渡すことでコンパイラが正常に動作することが期待されます。
クラスAは、SomeType
がNSObject
のサブクラスであり、実際のタイプはSomeType
ではないことのみを認識します。ファンクションがUIView
パラメータを受け取り、UILabel
を渡すような場合です。
パーフェクト、感謝を! – ospr