小编Ak1*_*Ak1的帖子

找不到协议声明

我有两个view controllers AB,他们都拥有对方作为自己的代表.

当我除了在头文件的开头和#import另一个头文件中定义协议之外什么都没做的时候,我得到两个错误 -

找不到"BDelegate"的协议声明,它在Ah(我写的地方)中显示无法找到"ADelegate"的协议声明,这是在Bh(我写的地方)中显示的

在线查看,人们早些时候写过,包含头文件的循环包含可能会导致问题.他们建议使用#include相反,或@class声明像 -

@class A
Run Code Online (Sandbox Code Playgroud)

代替

#import A.h
Run Code Online (Sandbox Code Playgroud)

#import B.h

我几乎试过这些进口的每一种组合,而且@classes,#include但仍然无法摆脱警告.此外,在线解决方案建议移动#import.m文件,但这也没有帮助.部分原因是在线解决方案有点模糊 - 如果你可以分解它会很棒.

关于可以做些什么来解决这个问题的任何建议?


- BigViewController.h -

#import "BaseViewController.h"
#include "BaseViewController.h"

@class BigViewController;

@protocol BigViewControllerDelegate
-(void) BigViewController:(BigViewController *) bigView;
@end

@interface BigViewController : UIViewController <BaseViewControllerDelegate>
{    
     //delegate
     id <BigViewControllerDelegate> delegate;

ivars...    
}

@properties...
@end

--------------------------------------------------
Run Code Online (Sandbox Code Playgroud)

- BaseViewController.h -

#<UIKit/UIKit.h>

#import "BigViewController.h"
#include "BigViewController.h"

@class BigViewController;

@protocol …
Run Code Online (Sandbox Code Playgroud)

cocoa-touch protocols objective-c

59
推荐指数
5
解决办法
5万
查看次数

标签 统计

cocoa-touch ×1

objective-c ×1

protocols ×1