2010-06-17 9 views
27

Ich habe diese Nachricht erhalten, seit ich vor ein paar Monaten mit dem Bau meines ersten iPhone-Programms begonnen habe.'-responsesToSelector:' nicht in Protokoll (en) gefunden

Ich möchte überprüfen, ob ein Delegat eine bestimmte Methode implementiert. Es funktioniert, aber ich bekomme diese Warnung.

Wie kann ich es richtig machen?

Antwort

97

Die Methode respondsToSelector: ist im Protokoll NSObject deklariert. Sie müssen sicherstellen, dass Ihre benutzerdefinierten Protokolle auch dem Protokoll NSObject entsprechen. Ändern Sie die Erklärungen der benutzerdefinierten Protokolle aus:

@protocol MyCustomProtocol 
... 
@end 

zu:

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

Ich nehme an, dass die AntwortToSelector ist eine Methode von NSObject, und ich denke, dass Sie so etwas wie id<MyProtocol> als Typ haben? Versuchen Sie NSObject*<MyProtocol>.

+0

Dies ist eine Abhilfe ist, und nicht die Lösung. Die richtige Lösung ist oben: Verwenden Sie NSObject als Teil der Protokolldefinition. – phatmann

Verwandte Themen