我有一个名为mainContainer的视图控制器,他比导入了另一个名为myPills的其他视图控制器,并将其添加为子视图。

mainContainer还有一个protocol将委托发送到myPills类,它看起来像:

//mainContainer.h
@protocol mainScrollerDelegate <NSObject>

-(void)function;

@end

@interface MainContainerView : UIViewController<UIScrollViewDelegate>


比起,显然,在myPills类中,我无法导入mainContainer视图,但是我确实想注册到mainContainer代表。

所以在myPills

@interface MyPillsView : UIViewController <mainScrollerDelegate>


在编译时会给出错误。

我已经读过这篇文章,并试图将导入移动到委托下-没有成功。(与未声明委托相同的错误)

Cannot find protocol declaration

您如何在classA导入classB的情况下从classA监听classB中的委托,因此classB无法导入A?

最佳答案

将协议声明放入其自己的Protocols.h文件中,例如:

//Protocols.h
@protocol mainScrollerDelegate <NSObject>

-(void)function;

@end


然后,将其导入发送委托方法的控制器和委托本身:

#import "Protocols.h"

@interface MyPillsView : UIViewController <mainScrollerDelegate>


此方法将使您的所有协议保持井井有条,并可以帮助删除循环导入。

旁注:您应该为协议使用类命名约定(即MainScrollerDelegate)。

07-27 13:40