簡體   English   中英

協議聲明錯誤

[英]Error in protocol declaration

我收到以下錯誤消息:

找不到協議聲明

我不知道是什么原因。 現在,我正在使用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;     
}

您正在將@interface放在.m文件上,是否要創建私有@interface 在那里聲明了IBOutlet嗎?


看到您的編輯后,我猜想您的ImageEnlarge類的.h上僅缺少導入。

我在您的代碼中看到了幾個(可能)問題。

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

代表應該軟弱。 現在,GetAddedMovieList確實以任何方式擁有委托,因此不應對委托的生命周期產生影響。

@synthesize delegate = delegate;

默認情況下,@ synth最近使用ivar_或_ivar。 有了最新的LLVM,@ synth不再是必需的,兩個ivars都不再需要。

@implementation之外的@synthesize嗎?

您檢查了#imports嗎?

這可能是一個導入循環。 您是否在使用協議的地方導入了正確的文件? 並且您正在將該文件導入協議文件中嗎? 如果是這樣,那么您將有一個導入循環。 在協議的標頭中使用前向聲明,這應該可以解決它。 (@類)

試試吧。

 @protocol ImageDelegate<NSObject>

    @optional

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

    @end

並添加此屬性。

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

我認為這將對您有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM