2016-02-26 23 views
5

Lúc đầu, trong LoadingVC.h Tôi tuyên bố một giao thức:Không loại hoặc giao thức lỗi trong khi giao thức được nhập khẩu

@protocol VideoWorker <NSObject> 

@required 

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

-(void)beginWorking; 

@end 

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

sau đó trong BlurWorkerGPU.h

... 
#import "LoadingVC.h" 

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

Tuy nhiên, llvm nói rằng

"Không có loại hoặc giao thức nào có tên 'VideoWorker'"

thật lạ vì tôi đang nhập tiêu đề nơi giao thức được xác định. Bất kì manh mối nào?

Trả lời

13

Bạn nên chuyển tiếp giao thức khai báo trong các tệp .h trước khi sử dụng. Đặt điều này trong đầu BlurWorkerGPU.h

@protocol VideoWorker; 
0

kiểm tra cho dù bạn đang nhập khẩu "BlurWorkerGPU.h" trong "LoadingVC.h"

0

giải pháp có thể là

  • giao thức nhập khẩu

@import YOURPROTOCOLNAME

  • nhập lớp, trong đó giao thức được khai báo

#import "YOURCLASSWHICHDECLAREDPROTOCOL.h"

  • Sử dụng @Class nhập lớp

@class YOURCLASSWHICHDECLAREDPROTOCOL;

Các vấn đề liên quan