In meinem Projekt habe ich 3 Klassen, nennen wir sie Apple, Orange und Birne.XCode falsche Warnung "implementiert das X-Protokoll nicht"
Apple und Orange haben beide Delegateigenschaften.
Beide definieren Protokolle in ihrer Header-Datei namens AppleDelegate und OrangeDelegate.
Sie haben jeweils initializers mit ähnlichen Signaturen:
- (id)initWithDelegate:(id<AppleDelegate>)delegate
- (id)initWithDelegate:(id<OrangeDelegate>)delegate
Pear implementiert OrangeDelegate und ist wie folgt definiert:
@interface Pear : NSObject <OrangeDelegate>
Innen Birne, ich diesen Anruf:
Orange *anOrange = [[[Orange alloc] initWithDelegate:self] autorelease];
Das Ergebnis in diesem Compiler Warnung:
Class 'Pear' does not implement the 'AppleDelegate' protocol
Es scheint mir, dass der Compiler die Protokolle in den Initialisierern nicht erkennt. Mit anderen Worten, erkennt es nur diese Signatur für beide:
- (id)initWithDelegate:(id)delegate
Denn wenn ich „Jump To Definition“ auf dem Initialisierer in Pear klicken, bringt es beiden Klassen als Optionen.
Gibt es eine Möglichkeit, diese Warnung zu korrigieren, abgesehen von der Umbenennung meiner Methoden?
das ist seltsam, Sie nicht zuweisen Pear, um ein Apple-Delegierter sein, etwas muss in Ihren Entscheidungen sein Ich denke, – Daniel
@Daniel - Das ist, was ich dachte, aber ich bin mir sicher, es ist nicht. Ich habe gerade Apple hinzugefügt und die Warnungen erschienen. Sowohl Orange als auch Birne existierten davor und wurden ohne Warnungen zusammengestellt. Weder Orange noch Pear wurden modifiziert, als ich Apple hinzufügte, aber plötzlich begannen sie, Warnungen zu werfen. – DougW