Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.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
Iphone 这个代码有什么问题? @协议MyViewDelegate -(void)didFinishProcessing:(MyView*)MyView//编译器在此停止,但出现错误 @结束 @接口MyView:MySuperclass{ 身份证代表; } @属性(非原子,保留)id委托; @结束_Iphone_Objective C_Protocols - Fatal编程技术网

Iphone 这个代码有什么问题? @协议MyViewDelegate -(void)didFinishProcessing:(MyView*)MyView//编译器在此停止,但出现错误 @结束 @接口MyView:MySuperclass{ 身份证代表; } @属性(非原子,保留)id委托; @结束

Iphone 这个代码有什么问题? @协议MyViewDelegate -(void)didFinishProcessing:(MyView*)MyView//编译器在此停止,但出现错误 @结束 @接口MyView:MySuperclass{ 身份证代表; } @属性(非原子,保留)id委托; @结束,iphone,objective-c,protocols,Iphone,Objective C,Protocols,当我尝试编译时,我会在MyView之前得到“预期的”)”。 错误在哪里?在@protocol之前添加行@class MyView。此时,编译器还不知道您的MyView类。MyView未被编译器识别,这就是为什么它希望在它之前有一个关闭的paren。这是因为该类是在MyViewDelegate协议下定义的,因此编译器尚未看到它。加 @protocol MyViewDelegate <NSObject> - (void) didFinishProcessing:(MyView*)myVi

当我尝试编译时,我会在MyView之前得到“预期的”)”。
错误在哪里?

@protocol
之前添加行
@class MyView
。此时,编译器还不知道您的
MyView
类。

MyView
未被编译器识别,这就是为什么它希望在它之前有一个关闭的paren。这是因为该类是在
MyViewDelegate
协议下定义的,因此编译器尚未看到它。加

@protocol MyViewDelegate <NSObject>
- (void) didFinishProcessing:(MyView*)myView; //compiler stops here with error
@end

@interface MyView : MySuperclass {

id<MyViewDelegate> _delegate;       
}

@property (nonatomic, retain) id<MyViewDelegate> delegate;

@end

上面的协议声明来修复它

太好了,现在我还有一个问题要问你。#import“MyView.h”和@class MyView;之间有什么区别;?我认为没有区别,但显然有区别,因为如果我只是导入这个类,它不起作用,所以我需要你提供的代码行。你可能有一个循环引用。由于协议依赖于MyView的定义,但MyView依赖于MyViewDelegate的定义,因此可能会失败<代码>#导入包含文件,就像复制和粘贴文件一样
@class
是一个占位符定义。它说“相信我,这个类是存在的,在链接过程中你会发现它的,但现在你只需要知道这些。”Horatiu,@class只是告诉编译器不要注意与这个类相关的任何错误#导入导入尚未导入的文件内容。在您的情况下,您已经在该文件中了-我相信在“MyView.h”中导入“MyView.h”不会起任何作用。。。
@class MyView;