2012-01-08 10 views
3

で終わる2つのプロトコル、それぞれが独自のファイル内にありますインポート2つの対物-Cプロトコルは、コンパイラエラー

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

プロトコルの各々は、メソッドの宣言のために反対を必要とします。各ファイルにインポートを作成するとすぐに、コンパイラはコンパイルすることができません。これは、プロトコルの1つを見つけることができないことを示すためです。 (PMAServiceProcessingDelegate.hのは#import文の)PMAService.hため

エラーメッセージ

  • 'PMAServiceProcessingDelegate.h' ファイルがPMAServiceProcessingDelegate.hため

エラーメッセージ(各メソッド宣言のための1つが見つかりません):

  • は私が逃した「PMAService」

あり、何かの宣言を見つけることができません「PMAService」の宣言を見つけることができませんか?このようなプロトコルをインポートすることは許可されていませんか?

+0

これはばかげた質問のように聞こえるかもしれませんが、関連性があるかもしれません:あなたの2つのプロトコル.hファイルには、中に含まれていますあなたのプロジェクトのファイルのリスト?言い換えると、Xcodeウィンドウの左側に、他のすべての.m&.hファイルが表示されますか?また、[以前に尋ねられた潜在的に有用な質問](http://stackoverflow.com/questions/2737148/cannot-find-protocol-declaration-in-xcode) –

+0

ハイマイケル。ええ、そうです。 albertamgは既にフォワード宣言で私の問題を解決しました...とにかく感謝:) – manu

答えて

8

あなたは前方宣言を使用して解決することができます循環依存を持っている:

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

とthats all?私はファイルの1つでこれを行う必要がありますか? ...奇妙なことに、本当にうまくいきます:-)このようなコンセプトは見たことがありません。ありがとうございました! – manu

+0

あなたは歓迎です:) – albertamg

+0

このALMOSTは私のために働く。 – uchuugaka

関連する問題