Как соответствовать самодельному протоколу?
У меня есть класс со свойством делегата. Любой, кто хочет быть делегатом, должен соблюдать протокол. Я определил все так:
#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
Теперь сумасшедшая вещь: у меня есть другой класс, который хочет быть делегатом. Так что это соответствует этому протоколу, вот так:
#import <Foundation/Foundation.h>
@class MyClass; // forward declaration. importet in implementation.
@protocol TheDelegateProtocol; // need forward declaration here, right?
@interface OtherClass : NSObject <TheDelegateProtocol> {
// ivars
}
@end
Я не могу заставить это работать. Там написано: «Нет определения протокола» TheDelegateProtocol ». найдено & Quot ;. Хорошо, этот протокол определен в MyClass, и я импортирую MyClass в реализацию. Есть идеи, что там не так?
Figured out something: В методе, где я пытаюсь назначить протокол, он говорит мне, что OtherClass не соответствует протоколу. Но это так! Это бессмысленно. Я также добавил метод протокола в шапке ....