2014-12-22 71 views
0

我遇到循环引用问题。假设我有以下层次结构:ViewControllerA和两个对象ObjBObjC(这两个对象是基于ViewControllerA可见的基于对象的UIVIew)。假设我创建了一个类别UIView+SuperExtensions,并且此类别被所有3个对象使用,并且所有这些对象都具有类文件。我是否必须在所有3个物品的类别上或ViewControllerA上做#import "UIView+SuperExtensions.h"如何防止循环引用

我现在正在导入所有3个对象,并且遇到很多循环引用问题。什么是正确的方法来做到这一点?

+1

单独导入不会创建循环引用。你将不得不提供一些更具体的例子(代码也许)。 – Fogmeister

+0

他不是在谈论保留周期,而是进口周期。 –

+0

您应该可以在所有3个.m文件中导入类别定义。我想不出为什么你需要他们在.h文件中,那就意味着没有循环性问题。如果这种方法出错,你可能不得不举出实际的例子。 –

回答

2

应该无处不在,你在哪里使用它。特别是你不应该依赖导入的头文件导入另一个头文件。

加为热门舔:

// Inside a .m 
#import "Subclass.h" 
#import "BaseClass.h" 
// You should import BaseClass.h, if you use its contents, even you can be pretty sure that Subclass.h already imported it 

如果这导致循环引用,你有另外一个问题。在大多数情况下,这是一个导入另一个标题头,而不是使用前向声明女巫@class

+0

感谢。我需要确认。谢谢。 – UFO

+0

不客气。 –

+0

你自相矛盾。您可以使用'@ class' *而不是*导入类的头文件,您只需创建对该类的引用,而不引用任何方法或字段/属性。这通常足以防止导入周期。 –