2014-12-22 69 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' *而不是*導入類的頭文件,您只需創建對該類的引用,而不引用任何方法或字段/屬性。這通常足以防止導入週期。 –