2010-06-17 3 views
27

Ho ricevuto questo messaggio da quando ho iniziato a creare il mio primo programma iPhone diversi mesi fa.'-respondsToSelector:' non trovato nei protocolli

Voglio verificare se un delegato implementa un determinato metodo. Funziona ma ricevo questo avvertimento.

Come posso farlo nel modo corretto?

risposta

97

Il metodo respondsToSelector: è dichiarato nel protocollo NSObject. Devi assicurarti che i tuoi protocolli personalizzati siano conformi anche al protocollo NSObject. Modificare le dichiarazioni dei vostri protocolli personalizzati da:

@protocol MyCustomProtocol 
... 
@end 

a:

@protocol MyCustomProtocol <NSObject> 
... 
@end 
3

Suppongo che responseSoSelector sia un metodo di NSObject e suppongo che tu abbia qualcosa come id<MyProtocol> come tipo? Prova NSObject*<MyProtocol>.

+0

Si tratta di una soluzione e non la soluzione. La soluzione corretta è sopra: usa NSObject come parte della definizione del protocollo. – phatmann