Ich habe eine Klasse mit einer Delegat-Eigenschaft. Wer Delegierter sein will, muss sich an ein Protokoll halten. Ich definiert alles wie folgt aus:Wie kann man einem selbst erstellten Protokoll entsprechen?
#import <UIKit/UIKit.h>
@protocol TheDelegateProtocol;
@interface MyClass : UIView {
id<TheDelegateProtocol> theDelegate;
}
@property (nonatomic, assign) id<TheDelegateProtocol> theDelegate;
@end
@protocol TheDelegateProtocol<NSObject>
@required
- (void)fooBarWithFoo:(CGFloat)foo;
@end
Nun ist die verrückte Sache ist: Ich habe eine andere Klasse, die der Delegierte sein will. So entspricht es diesem Protokoll, wie folgt:
#import <Foundation/Foundation.h>
@class MyClass; // forward declaration. importet in implementation.
@protocol TheDelegateProtocol; // need forward declaration here, right?
@interface OtherClass : NSObject <TheDelegateProtocol> {
// ivars
}
@end
Ich kann das nicht zur Arbeit bekommen. Es heißt: "Keine Definition des Protokolls 'TheDelegateProtocol' gefunden". Nun, dieses Protokoll ist in MyClass definiert, und ich importiere MyClass in der Implementierung. Irgendeine Idee, was ist da falsch?
Etwas herausgefunden: In einer Methode, wo ich versuche, das Protokoll zuzuordnen, sagt es mir, dass OtherClass nicht dem Protokoll entspricht. Aber es tut! Das macht keinen Sinn. Ich fügte auch die Protokollmethode im Titel hinzu ....
Es ist nicht großartig, Warnungen zu ignorieren, was auch immer sie sind ... –