我得到一些循环引用(我认为)之间的几个类之间的问题,需要导入的标头,由于子类或协议定义。我可以解释为什么事情是以这种方式建立的,但我不确定这是至关重要的。基本上这些类正在管理相互对多的数据关系。循环引用 - 协议和子类
布局是这样的:
A类导入B类,因为它是B类的委托并需要它的协议定义。
B类输入C类,因为它是C类的子类。
C类输入A类,因为它是A类的委托并需要它的协议定义。
下面是说明问题的一些示例代码。我得到的错误如下所示:在A类 - “无法找到Class_B_Delegate的协议定义”。 在B类中 - “无法找到类C的接口声明 - 类B的超类。”在C类中 - “无法找到Class_A_Delegate的协议定义”。
A级标头:
#import <Foundation/Foundation.h>
#import "Class_B.h"
@protocol Class_A_Delegate
@end
@interface Class_A : NSObject <Class_B_Delegate> {
}
@end
B类首标:
#import <Foundation/Foundation.h>
#import "Class_C.h"
@protocol Class_B_Delegate <NSObject>
@end
@interface Class_B : Class_C {
}
@end
C类部首:
#import <Foundation/Foundation.h>
#import "Class_A.h"
@interface Class_C : NSObject <Class_A_Delegate> {
}
@end
我试过这个,但我仍然收到有关无法找到协议定义的警告。我最终将协议定义放在单独的头文件中,并且目前为止似乎工作正常。我们拭目以待... – blindjesse 2010-01-28 18:31:18