use*_*019 1 compiler-errors protocols objective-c
我有两个文件定义协议,用于实现观察者模式,我从其中一个获得编译器错误.
// 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
Run Code Online (Sandbox Code Playgroud)
我只有.h文件,ObserverDelegate并ObservableDelegate没有相应的.m文件.
该错误在ObserveableDelegate.h中显示"预期的类型" -(void) addObserver: (ObservableDelegate*) observer;
ObservableDelegate不是类型,它是协议的名称.您不能将它用作方法参数的类型.如果您想要求方法的参数符合该协议,您可以这样表达:
- (void)addObserver: (id<ObservableDelegate>)observer;
Run Code Online (Sandbox Code Playgroud)
这表示该方法采用id符合的任何对象(是"通用"指针)ObservableDelegate.您可以使用比id您想要的更具体的类型,并且您知道,例如,委托也应该始终是UIViewController子类.
| 归档时间: |
|
| 查看次数: |
2879 次 |
| 最近记录: |