导入协议时没有类型或协议错误

时间:2016-02-26 17:40:04

标签: ios objective-c protocols

首先,在LoadingVC.h中,我声明了一个协议:

@protocol VideoWorker <NSObject>

@required

@property (nonatomic) float progress;
@property (nonatomic) BOOL done;

-(void)beginWorking;

@end

@interface LoadingVC : UIViewController <UIAlertViewDelegate>
...
@end

然后在BlurWorkerGPU.h

...
#import "LoadingVC.h"

@interface BlurWorkerGPU  : NSObject <VideoWorker> {
...
}
- (void)beginWorking;
@property(nonatomic)float progress;
@property(nonatomic)BOOL done;
 ...
@end

然而,llvm说

  

&#34;没有命名的类型或协议&#39; VideoWorker&#39;&#34;

这很奇怪,因为我导入了定义协议的头。有线索吗?

3 个答案:

答案 0 :(得分:18)

在使用之前,您应该在.h文件中转发声明协议。把它放在BlurWorkerGPU.h

的顶部
@protocol VideoWorker;

答案 1 :(得分:1)

检查您是否在“LoadingVC.h”中导入“BlurWorkerGPU.h”

答案 2 :(得分:0)

可能的解决方案

  • import protocol
  

@import   的 YOURPROTOCOLNAME

  • 导入声明协议的类
  

#import "YOURCLASSWHICHDECLAREDPROTOCOL.h"

  • 使用@Class导入班级
  

@class YOURCLASSWHICHDECLAREDPROTOCOL;