2015-05-19 29 views
0

例如,有三個類,Aclass,Bclass和Cclass。 Aclass將Bclass和Cclass的一些實例初始化爲不同的子元素。通常我會在Aclass.h或Alcass.m中導入Bclass.h和Cclass.h。到目前爲止,Bclass和Cclass還不相識。然而,例如Bclass需要知道Cclass的屬性和方法。一種方法是在Bclass.h或Bclass.m中導入Cclass.h;後來Cclass需要了解Bclass,然後我將在Cclass.h或Cclass.m中導入Bclass.h。有時候,如果有「導入循環」無法通過編譯,那麼我可以將其中一個從xx.h導入@class Xclass。是否建議不要在cocos2d中導入父級或兄弟級的頭文件?

雖然這有效,但我覺得這不是正確的或委託的方式。我過去只使用委託來避免導入父類。那麼,如果一個班級需要了解其兄弟姐妹,最好的設計方法是什麼?

回答

1

如果你正在獲得導入週期,你應該做的只是將頭文件導入到.m文件中,然後如果你真的需要在.h文件中使用該對象,請在頭文件頂部使用@class ClassName;來承諾編譯器確定對象的類型存在。

編輯: 我的壞,TL; dr'ed最後森泰斯,也就是接近它

+0

在我的理解正確的方法,你在.m文件的意思是,你可以輸入任何你喜歡的,父母類,兄弟姐妹,導入週期等,讓編譯器來處理它們?這是一種常見的方式嗎?我過去只使用委託來避免導入父類。 – ArtS

+0

是(但不是關於導入週期的部分),導入週期唯一發生的時間是兩個(或多個)頭文件相互導入,並且編譯器對此很感興趣,所有頭文件在一天結束時都會執行承諾其他.m文件,這些屬性和函數集合存在於代碼中的某處。所以只要不引起導入循環(這就像編譯器的遞歸無限循環),擁有'@ class'或者它實際上導入到頭文件中並不會對編譯器產生太大的影響 – Fonix

+0

非常感謝穹窿!這裏的進口週期不是合適的詞彙。我的意思是在B.m導入C.h,在C.m也導入B.h.因此,只要將它保存在.m文件中,就可以進行任何導入。我對嗎? – ArtS

相關問題