Форвардные объявления используются для уменьшения зависимостей и предотвращения ненужного импорта, когда задействованы несколько заголовочных файлов.
Как говорится, как мне поступить в этом сценарии?
Допустим, у меня естьследующие:
ClassAlpha.h
@interface ClassAlpha: NSObject
-(void)helloWorld;
@end
ProtocolA.h
@protocol ProtocolA <NSObject>
-(void)doSomethingWithAlpha:(ClassAlpha *__Nonnull)alpha;
@end
ClassBeta.h(соответствует ProtocolA)
@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.В качестве альтернативы, если бы я использовал оператор импорта ClassAlpha в ProtocolA, нет необходимости говорить, что ClassBeta не должен был бы это делать.Какова будет лучшая практика для этой ситуации?