Tra*_* M. 7 import objective-c header-files forward-declaration objective-c-protocol
我已经读过你应该尝试@class在头文件中使用而#import不是当你@class包含你正在尝试使用的委托协议时这不起作用.
MyView.h
#import <UIKit/UIKit.h>
@class MyCustomClass; // <-- doesn't work for MyCustomClassDelegate, used below
@interface MyView : UIView <MyCustomClassDelegate>
@end
Run Code Online (Sandbox Code Playgroud)
我想我忽视了一些事情,有没有办法@class在这种情况下工作或者是#import我唯一的选择?
编辑:当然,解决这个问题的方法是在.m文件的私有接口部分而不是.h文件中声明#import MyCustomClass和MyCustomClassDelegate.
Bra*_*red 10
你可以@protocol用来转发声明一个协议,如果你只需要这样的变量:
@protocol MyProtocol;
@interface MyClass {
id<MyProtocol> var;
}
@end
Run Code Online (Sandbox Code Playgroud)
在您的情况下,声明的类正在尝试符合协议,因此编译器必须知道此时的协议方法,以便推断天气或不符合类.
在这种情况下,我认为您的选择是将协议拆分为自己的文件和#import标头,或者在使用它的类声明之上声明该标头中的协议.