Импорт двух протоколов Objective-C в каждом другом файле заканчивается ошибками компилятора - PullRequest
3 голосов
/ 08 января 2012

существует два протокола, каждый в своем собственном файле:

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

каждому из протоколов требуется противоположность для объявления метода.как только я создаю импорт в каждом из файлов, компилятор больше не может компилировать, поскольку сообщает, что не может найти один из протоколов.

сообщения об ошибках для PMAService.h (для оператора #import PMAServiceProcessingDelegate.h)

  • 'PMAServiceProcessingDelegate.h' файл не найден

сообщения об ошибках для PMAServiceProcessingDelegate.h (одиндля каждого объявления метода):

  • Не удается найти объявление для 'PMAService'
  • Не удается найти объявление для 'PMAService'

, есть что-тоя пропустил?Разве не разрешено импортировать такие протоколы?

1 Ответ

8 голосов
/ 08 января 2012

У вас есть круговая зависимость , которую вы можете решить, используя предварительное объявление :

// 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...