0

次のようなエラーが発生します:

プロトコル宣言が見つかりません

理由がわかりませんでした。現在、ARCを使用しています。問題がそれによるものではないかと思います。これが私がプロトコル宣言に使用しているコードです

//これはデリゲートを宣言する最初のページです

.h

@protocol ImageDelegate

@optional

-(void)ImageSelected:(UIImage *)ImageName;

@end

@interface GetAddedMovieList : UIViewController<UITableViewDataSource,UITableViewDelegate>{

    id<ImageDelegate> delegate;

}

@property(nonatomic, strong)id<ImageDelegate> delegate;

@end

.m

@synthesizeデリゲート;


//これはデリゲートを設定しようとしたページです。ここでエラーが発生します。

@interface ImageEnlarge : UIViewController<ImageDelegate>{

IBOutlet UIImageView *imgEnlarge; 

NSString *stgImageName;     
}
4

4 に答える 4

0

おそらくインポートループです。プロトコルを使用している場所に適したファイルを#importしますか?そして、そのファイルをプロトコルファイルにインポートしていますか?その場合、インポートループがあります。代わりに、プロトコルのヘッダーで前方宣言を使用すると、問題が解決するはずです。(@クラス)

于 2012-06-22T12:15:34.177 に答える
0

Try like it.

 @protocol ImageDelegate<NSObject>

    @optional

    -(void)ImageSelected:(UIImage *)ImageName;

    @end

And also add this property.

@property(nonatomic,assign)id<ImageDelegate> delegate;

I think it will be helpful to you.

于 2012-06-22T12:25:33.867 に答える
0

@interface.m ファイルに配置しています。プライベートを作成しようとしています@interfaceか? そこにIBOutlet宣言されていますか?


あなたの編集を見た後、ImageEnlarge クラスの .h にインポートがないだけだと思います。

于 2012-06-22T11:57:27.757 に答える
0

コードに (考えられる) いくつかの問題があります。

@property(nonatomic, strong)id<ImageDelegate> delegate;

デリゲートは弱くなければなりません。GetAddedMovieList は何らかの方法でデリゲートを所有するようになったため、そのライフ サイクルに影響を与えるべきではありません。

@synthesize delegate = delegate;

デフォルトでは、@synth は最近 ivar_ または _ivar のいずれかを使用します。最新の LLVM では、@synth はもはや必要ありません。

@implementation の外で @synthesize ?

#import を確認しましたか?

于 2012-06-22T12:05:40.230 に答える