Ein Protokoll P
erfordert eine Variable v
der Klasse C
.ist Swift strenger Klasse in Protokoll Vars durchsetzen?
Klasse X
implementiert Protokoll P
eine Variable v
der Klasse erklärt C1
wo C1
C
erstreckt.
Hier ist der Code:
import Foundation
class C { }
class C1: C { }
protocol P {
var v: C { get set }
}
class X: P {
var v: C1
init(withV v: C1) {
self.v = v
}
}
Xcode Beschwerden mit diesem Fehler:
Type 'X' does not conform to protocol 'P'
Protocol requires property 'v' with type 'C'
Candidate has non-matching type 'C1'
Warum ist der Compiler zwingt mich genau in dem Protokoll erklärt den gleichen Typ übereinstimmen?
Edit:
Genau die gleiche Umsetzung in Obj-C kompiliert ohne Fehler oder Warnungen
@interface C: NSObject
@end
@implementation C
@end
@interface C1: C
@end
@implementation C1
@end
@protocol P <NSObject>
@property (nonatomic, strong) C *v;
@end
@interface X: NSObject <P>
@property (nonatomic, strong) C1 *v;
@end
@implementation X
@end
Obj-C überhaupt nicht beschweren, aber ich nur herausgefunden, dass die Menge im Protokoll bedeutet, dass jeder zur Laufzeit 'v' auf eine' C'-Klasse und 'X' auf einen Zugriff auf' C' verzichten kann, als wäre es 'C1'. Danke für die Antwort. – Scakko