Dans mon projet j'ai 3 classes, appelons-les Apple, Orange et Pear. Apple et Orange ont toutes deux des propriétés de délégué.XCode avertissement incorrect "n'implémente pas le protocole X"
Ils définissent tous les deux des protocoles dans leur fichier d'en-tête appelé AppleDelegate et OrangeDelegate.
Ils ont chacun initializers avec des signatures similaires:
- (id)initWithDelegate:(id<AppleDelegate>)delegate
- (id)initWithDelegate:(id<OrangeDelegate>)delegate
Pear met en œuvre OrangeDelegate et est défini comme suit:
@interface Pear : NSObject <OrangeDelegate>
Pear A l'intérieur, je fais cet appel:
Orange *anOrange = [[[Orange alloc] initWithDelegate:self] autorelease];
que les résultats dans cet avertissement de compilateur:
Class 'Pear' does not implement the 'AppleDelegate' protocol
Il me semble que le compilateur ne reconnaît pas les protocoles dans les initialiseurs. En d'autres termes, il ne reconnaît que cette signature pour les deux:
- (id)initWithDelegate:(id)delegate
Parce que quand je clique sur « Jump To Définition » sur le initialiseur en poire, il apporte à la fois des cours en option.
Est-il possible de corriger cet avertissement en plus de renommer mes méthodes?
c'est bizarre, vous n'avez jamais assigné Pear à être un délégué de la pomme, quelque chose doit être éteint dans vos défenses je pense – Daniel
@Daniel - C'est ce que je pensais, mais je suis sûr que ce n'est pas le cas. Je viens d'ajouter Apple et les avertissements sont apparus. Les deux Orange et Poire existaient avant cela, et compilé sans avertissements. Ni Orange ni Pear ont été modifiés quand j'ai ajouté Apple, mais soudainement ils ont commencé à lancer des avertissements. – DougW