【发布时间】:2018-10-24 07:54:31
【问题描述】:
前向声明用于减少依赖关系并防止涉及多个头文件的不必要的导入。
话虽如此,我应该如何处理这种情况?
假设我有以下内容:
ClassAlpha.h
@interface ClassAlpha: NSObject
-(void)helloWorld;
@end
ProtocolA.h
@protocol ProtocolA <NSObject>
-(void)doSomethingWithAlpha:(ClassAlpha *__Nonnull)alpha;
@end
ClassBeta.h(符合协议 A)
@interface ClassBeta: NSObject<ProtocolA>
@end
ClassBeta.m
#import "ClassAlpha.h"
@implementation ClassBeta
-(void)doSomethingWithAlpha:(ClassAlpha *)alpha
{
NSLog(@"Hello");
}
@end
在 ProtocolA.h 中,我应该使用 ClassAlpha 的前向声明吗?但是,如果我这样做,那将意味着 ClassBeta 必须是在其实现中导入 ClassAlpha 的那个,同时导入 ProtocolA。或者,如果我要在 ProtocolA 中使用 ClassAlpha 的导入语句,不用说 ClassBeta 就不需要这样做。这种情况下的最佳做法是什么?
【问题讨论】:
标签: ios class protocols forward-declaration