gpt4 book ai didi

objective-c - 在彼此文件中导入两个 objective-c 协议(protocol)以编译器错误结尾

转载 作者:搜寻专家 更新时间:2023-10-30 19:56:38 27 4
gpt4 key购买 nike

有两个协议(protocol),每个都在自己的文件中:

// 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

每个协议(protocol)都需要相反的方法声明。一旦我在每个文件中创建导入,编译器就无法再编译,因为它告诉我它找不到其中一个协议(protocol)。

PMAService.h 的错误消息(针对 PMAServiceProcessingDelegate.h 的#import 语句)

  • 未找到“PMAServiceProcessingDelegate.h”文件

PMAServiceProcessingDelegate.h 的错误消息(每个方法声明一个):

  • 找不到“PMAService”的声明
  • 找不到“PMAService”的声明

我错过了什么吗?不允许导入这样的协议(protocol)吗?

最佳答案

您有一个循环依赖,您可以使用前向声明解决它:

// 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

关于objective-c - 在彼此文件中导入两个 objective-c 协议(protocol)以编译器错误结尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8778047/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com