我有两个定义协议(protocol)的文件,用于实现观察者模式,并且我从其中一个文件中收到编译器错误。
// ObserverDelegate.h
#import <Foundation/Foundation.h>
@protocol ObserverDelegate <NSObject>
@required
@end
// ObservableDelegate.h
#import <Foundation/Foundation.h>
#import "ObserverDelegate.h"
@protocol ObservableDelegate <NSObject>
@required
-(void) addObserver: (ObservableDelegate*) observer; // ERROR ON THIS LINE WHEN COMPILE
@end
我只有
ObserverDelegate
的 .h 文件和 ObservableDelegate
,没有对应的 .m 文件。错误在
-(void) addObserver: (ObservableDelegate*) observer;
行的 ObserveableDelegate.h 中显示“预期类型”
最佳答案
ObservableDelegate
不是类型,它是协议(protocol)的名称。您不能将其用作方法参数的类型。如果你想要求方法的参数符合那个协议(protocol),你可以这样表达:
- (void)addObserver: (id<ObservableDelegate>)observer;
这表示该方法采用符合
id
的任何对象(ObservableDelegate
是“通用”指针)。 .您可以使用比 id
更具体的类型。例如,如果您愿意并且知道委托(delegate)应该始终是 UIViewController
子类也是如此。
关于objective-c - 协议(protocol)定义中的编译器错误 "expected a type",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10660803/