2010-09-23 30 views
1

Je reçois un avertissement particulier, en particulier celui-ci:Implémentation des méthodes de délégation, mais toujours un avertissement?

warning: class does not implement the 'UIWebViewDelegate' protocol 

... quand j'ai ces méthodes dans mon application:

-(void)webViewDidStartLoad { 
    ... 
} 

-(void)webViewDidFinishLoad { 
    ... 
} 

... et même après la mise en délégué du UIWebView à self, je reçois toujours cet avertissement, et les méthodes ne sont jamais appelées (NSLog ne donne aucun résultat.)

Quelqu'un peut-il identifier ce qui se passe ici? Merci d'avance!

Répondre

3

Comme le dit '@Non on' en particulier, vos méthodes ne sont pas déclarées correctement. C'est pourquoi les méthodes ne sont pas appelées du tout.

L'avertissement a une raison différente. C'est parce que votre définition d'interface ne déclare pas qu'elle implémente le protocole UIWebViewDelegate.

@interface MyClass : NSObject <UIWebViewDelegate> { 
... 
} 
... 
@end 

Si oui ou non l'interface déclare ou non le protocole est en réalité aucune conséquence à l'exécution, il est juste un soupçon au compilateur qui lui permet d'émettre des avertissements comme celui que vous voyez, ou mises en garde si vous ne pas implémenter les méthodes.

+0

Merci, cela a réduit l'erreur, et maintenant les appels sont en cours. – esqew

3

Je ne pense pas que vos méthodes de délégué soient correctes. Ne devraient-ils pas être:

- (void)webViewDidStartLoad:(UIWebView *)webView 
{ 
} 

- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
} 
+0

Désolé, grosse faute de frappe lors du transfert vers SO ... Je les ai dans mon code source. – esqew