您的标题中有一个依赖循环。很容易解决;不是在每个头文件中包含其他类的头文件,而是使用@class
指令并将头文件包含在实现文件中。
在classA.h
中,执行以下操作:
@class ClassB
@interface ClassA
...
@end
在classA.m
中,执行以下操作:
#import "classA.h"
#import "classB.h"
@implementation ClassA : NSObject
...
@end
在classB.h
中,执行以下操作:
@class ClassA
@interface ClassB
...
@end
最后,在 中classB.m
,执行以下操作:
#import "classB.h"
#import "classA.h"
@implementation ClassB : NSObject
...
@end
但是,如果您尝试使用委托模式,您的委托应该实现协议而不是显式类。您应该在委托和在第三类中使用它的对象之间建立连接。这将是 ClassA 的标题:
@protocol SomeDelegate <NSObject>
- (void)classA:(ClassA *)classA didSomethingWithAString:(NSString *)string;
@end
@interface ClassA : NSObject
@property (weak, nonatomic) id <SomeDelegate> delegate;
@end
但是,同样,如果您想要做的只是让 ClassA 调用 ClassB 中的函数,该函数可以调用 ClassA 中的函数,您可能需要重新检查您设计类的方式。