Objective c 协议声明中的错误
我得到一个错误,因为: 找不到协议声明 我找不出原因。现在我正在使用ARC。我怀疑这个问题是由于这个原因。下面是我用于协议声明的代码 //这是我们声明委托的第一页 hObjective c 协议声明中的错误,objective-c,ios,Objective C,Ios,我得到一个错误,因为: 找不到协议声明 我找不出原因。现在我正在使用ARC。我怀疑这个问题是由于这个原因。下面是我用于协议声明的代码 //这是我们声明委托的第一页 h @协议ImageDelegate @可选的 -(void)ImageSelected:(UIImage*)ImageName; @结束 @接口GetAddedMovieList:UIViewController{ id代表; } @属性(非原子,强)id委托; @结束 m @综合代表 //这是我试图设置委托的页面。这里我得到了
@协议ImageDelegate
@可选的
-(void)ImageSelected:(UIImage*)ImageName;
@结束
@接口GetAddedMovieList:UIViewController{
id代表;
}
@属性(非原子,强)id委托;
@结束
m
@综合代表
//这是我试图设置委托的页面。这里我得到了错误
@interface ImageEnlarge : UIViewController<ImageDelegate>{
IBOutlet UIImageView *imgEnlarge;
NSString *stgImageName;
}
@界面图像放大:UIViewController{
ibuiimageview*imgEnlarge;
NSString*stgImageName;
}
您正在将一个@接口
放在一个.m文件中,是否正在尝试创建一个私有@接口
?在那里声明了一个IBOutlet
看到您的编辑后,我猜您的ImageDiagrade类的.h上只缺少一个导入。我看到您的代码中有几个(可能)问题
@property(nonatomic, strong)id<ImageDelegate> delegate;
默认情况下,@synth最近使用ivar_uu或ivar。使用最新的LLVM@synth,顺便说一句,也不再需要ivar
@在@实现之外进行合成
你检查过你的“导入”了吗?这可能是一个导入循环。您是否为使用协议的位置导入正确的文件?您是否将该文件导入到协议文件中?如果是这样,那么就有一个导入循环。改为在协议头中使用转发声明,这样应该可以解决这个问题。(@class)试试看
@protocol ImageDelegate<NSObject>
@optional
-(void)ImageSelected:(UIImage *)ImageName;
@end
@协议ImageDelegate
@可选的
-(void)ImageSelected:(UIImage*)ImageName;
@结束
并添加此属性
@property(nonatomic,assign)id<ImageDelegate> delegate;
@属性(非原子,赋值)id委托;
我认为这将对您有所帮助。这在另一个视图控制器中@接口Image放大:UIViewController{IBOutlet UIImageView*IMGENLAGE;NSString*stgImageName;}不在我在其中编写委托的视图控制器中。我也尝试了使用“弱”而不是“强”。我参考了很多帖子,并做了那些帖子的回复中提到的事情。尽管我无法解决这个问题,但我还是发布了自己。你能让我知道我需要对现有代码做哪些更改吗。提前谢谢。是的,我尝试了所有这些选项,使用@class而不是#import。我已导入声明协议的正确文件。该问题仅在启用ARC时出现。否则,我的代码工作正常。是否检查了导入循环?如果给定了@property(nonatomic,assign)。显示此错误,“不安全的\u未恢复的属性'delegate'的现有ivar'delegate'必须是\u不安全的\u未恢复的”
@protocol ImageDelegate<NSObject>
@optional
-(void)ImageSelected:(UIImage *)ImageName;
@end
@property(nonatomic,assign)id<ImageDelegate> delegate;