我收到错误信息:
未找到协议声明
我无法找出原因。现在我正在使用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;
}
答案 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;
我认为这会对你有所帮助。