2012-02-24 5 views
1

これと同じ質問もありますが、私は解決策を試しましたが、まだ私のために働いていませんでした。エラーで「プロトコル宣言を見つけることができません」

これは私のVCWithProtocol.h

@protocol mydemoDelegate 
@optional 
-(void)demoDelegateMethodWithSuccess:(BOOL)yesOrNo; 
@end 

@interface VCWithProtocol : UIViewController 
{ 
    id<mydemoDelegate>mydelegate; 
} 
@property (nonatomic,assign)id<mydemoDelegate>mydelegate; 

VCWithProtocol.m 

`@synthesize mydelegate` 

これは私がVCWithProtocolのインポートが、合成するだけでなく

+0

を必要ですか?あなたは何が間違っているか教えてくれるほど私たちを見せていません。そして、あなたは '#import" VCWithProtocol.h "@classディレクティブはヘッダをインポートしません。 – dbrajkovic

+0

私は両方を行う必要がありますか? '#import" VCWithProtocol.h "と' @class VCWithProtocol.h' – Heena

+0

ただインポートする必要はありません。そして、私は、その後どのように私はそのデリゲート – dbrajkovic

答えて

2

は、任意のクラス名とプロトコルの最初の文字を大文字を使用します。
MyDemoDelegateとデリゲートがあなたの.mファイルの先頭に#importを「VCWithProtocol.h」を追加する必要が

@property (nonatomic,assign)id<mydemoDelegate>mydelegate; 
+0

私はあなたの#importを持つソリューションが、まだその問題を試してみました。 .hファイルのUIViewController <ここでここで私はエラーを返す> – Heena

+0

あなたのプロジェクトをクリーンアップし、再度ビルド... –

0

を働いていないと試みた

@class VCWithProtocol; 

@interface VCTOUseDelegate : UIViewController <mydemoDelegate> //here is where it shows error with cannot find protocol declaration 

VCTOUseDelegate.m 

VCWithProtocol *obj = [[VCWithProtocol alloc] init]; 
obj.mydelegate = self; 

私の委任を使用しようとしています私のクラスは、あなたのマイデレゲート、お電話

代わりに @class VCWithProtocol;書き込み #import VCWithProtocol.h

そして、いくつかの良い練習の

+0

にインポートされたすべてのものは、はい、私はそれを合成しており、また、 'VCTOUseDelegate.mydelegate =自己ました;' – Heena

0

使用保持避けます。

+0

それはヘッダーファイルにする必要があります。 – dbrajkovic

+0

いいえ、プロトコルを使用して前方に宣言します。 @protocol mydemoDelegate;ヘッダーファイルの –

+0

しかしヘッダーで@protocolを使用してから、実装ファイルで#importを使用するのはなぜでしょうか?ヘッダーで#importするだけで完了できますか? – dbrajkovic

0
@property (nonatomic,**weak**)id<mydemoDelegate>mydelegate; 

デリゲートは常に動作していないどのような弱いリンク

+0

ほとんどの場合、必ずしもそうではありません。 –

関連する問題