有两个协议,每个协议都在自己的文件中:
// PMAService.h
#import <Foundation/Foundation.h>
#import "PMAPost.h"
#import "PMAServiceProcessingDelegate.h"
@protocol PMAService <NSObject>
-(void)setupService;
-(BOOL)processPost:(PMAPost *)post withDelegate:(id<PMAServiceProcessingDelegate>)delegate;
@end
// PMAServiceProcessingDelegate.h
#import <Foundation/Foundation.h>
#import "PMAPost.h"
#import "PMAService.h"
@protocol PMAServiceProcessingDelegate <NSObject>
-(void)successfullyProcessedPost:(PMAPost *)post by:(id<PMAService>)service;
-(void)notProcessedPost:(PMAPost *)post by:(id<PMAService>)service withError:(NSError *)error;
@end
Run Code Online (Sandbox Code Playgroud)
每个协议都需要与方法声明相反.一旦我在每个文件中创建导入,编译器就不能再编译,因为它告诉我它找不到其中一个协议.
PMAService.h(对于#import语句PMAServiceProcessingDelegate.h)的错误消息
错误消息PMAServiceProcessingDelegate.h(每个方法声明一个):
有什么我错过了吗?不允许导入这样的协议吗?
您有一个循环依赖项,您可以使用前向声明来解决:
// PMAService.h
#import <Foundation/Foundation.h>
#import "PMAPost.h"
@protocol PMAServiceProcessingDelegate;
@protocol PMAService <NSObject>
-(void)setupService;
-(BOOL)processPost:(PMAPost *)post withDelegate:(id<PMAServiceProcessingDelegate>)delegate;
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1692 次 |
| 最近记录: |