说A类依赖于B类,反之亦然。
很明显在a.h中我会把#import“b.h”放在“b.h”中我会输入“a.h”
之后
我们应该
宣布@class A
b.h中的和a.h中的@class B
我们应该同时使用@class吗?
为什么?
我推断如果我只做一次,比如在a.h中包含@class B,假设a.h还包含#import“b.h”那么a.h类已经知道了b.h
然而,似乎我必须在xcode中做到这一点,我想知道为什么。
答案 0 :(得分:1)
在每个类的头文件中使用前向声明(即@class Foo
)并没有错。如果您需要的是每个类引用另一个类,您可以这样做。前向声明只是告诉编译器"这个名称引用一个类,并且该类的实际声明将在稍后出现。"
正如你所说,你也可以在A.h中使用B的前向声明,然后在B.h中导入A.h.我不认为这样做有任何实际好处,除非A.h中还有其他东西需要在B.h中引用。
但似乎我必须这样做 在xcode和我想知道为什么。
如果您的意思是在B.h中导入A.h而不是使用A的前向声明时出现错误,请发布错误。我不认为应该有问题。 (无论如何,问题将是编译器问题或Objective-C问题,而不是Xcode问题.Xcode只是IDE。)
答案 1 :(得分:0)
你应该重新考虑你的设计,不需要像这样的循环依赖。
您可能希望在ClassA
中声明ClassADelegate
和ClassA.h
。接下来在ClassB
中声明ClassB.h
,然后从那里导入ClassA.h
,让ClassB
符合ClassADelegate
协议以解决循环依赖关系。
通过这种方式,您可以获得明确的所有权关系,以及将来更容易维护和扩展的代码。