Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 协议声明中的错误_Objective C_Ios - Fatal编程技术网

Objective c 协议声明中的错误

Objective c 协议声明中的错误,objective-c,ios,Objective C,Ios,我得到一个错误,因为: 找不到协议声明 我找不出原因。现在我正在使用ARC。我怀疑这个问题是由于这个原因。下面是我用于协议声明的代码 //这是我们声明委托的第一页 h @协议ImageDelegate @可选的 -(void)ImageSelected:(UIImage*)ImageName; @结束 @接口GetAddedMovieList:UIViewController{ id代表; } @属性(非原子,强)id委托; @结束 m @综合代表 //这是我试图设置委托的页面。这里我得到了

我得到一个错误,因为:

找不到协议声明

我找不出原因。现在我正在使用ARC。我怀疑这个问题是由于这个原因。下面是我用于协议声明的代码

//这是我们声明委托的第一页

h

@协议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;