协议声明出错

时间:2012-06-22 11:53:37

标签: objective-c ios

我收到错误信息:

  

未找到协议声明

我无法找出原因。现在我正在使用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 delegate;


//这是我尝试设置委托的页面。我在这里得到错误。

@interface ImageEnlarge : UIViewController<ImageDelegate>{

IBOutlet UIImageView *imgEnlarge; 

NSString *stgImageName;     
}

4 个答案:

答案 0 :(得分:0)

您在.m文件中放置@interface,是否要创建私有@interface?在那里声明IBOutlet


看到你的编辑后,我猜你的ImageEnlarge类的.h上只缺少一个导入。

答案 1 :(得分:0)

我在您的代码中看到了几个(可能的)问题。

@property(nonatomic, strong)id<ImageDelegate> delegate;
代表们应该是弱者。 GetAddedMovieList现在以任何方式拥有委托,因此不应对其生命周期产生影响。

@synthesize delegate = delegate;

默认情况下,@ synth最近使用ivar_或_ivar。使用最新的LLVM @synth不再是必需的btw,也不是ivars。

在@implementation之外@synthesize?

你检查了#imports吗?

答案 2 :(得分:0)

这可能是一个导入循环。你#import正确的文件,你在哪里使用协议?你在协议文件中导入该文件?如果是这样,那么你有一个导入循环。改为在协议的标题中使用前向声明,这应该解决它。 (@class)

答案 3 :(得分:0)

尝试一下。

 @protocol ImageDelegate<NSObject>

    @optional

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

    @end

并且还添加此属性。

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

我认为这会对你有所帮助。