2013-07-31 69 views
-3

我無法使用#import和@classobjective-C#import @class

讓我們試着用一個簡單的經典例子來說明事情:員工案例。

我有班級員工,班主任和班級部門。

員工是經理的超類,也包含一個對象部門 (所以我應該在哪裏進口部?在employee.h或employee.m和我應該使用#import或@class?)

部包含員工的陣列,所以應該這樣應該導入類employee.h (我應該使用進口或課嗎?在哪裏?)

i know theres a better way to solve this problem, using databases or so 
but that's not my point, i want to understand when and where to use 
#import and where and when use @class 

我試圖讀取類似的帖子,但我不明白的是如何工作的。 ..

回答

3

使用@class僅僅是編譯器的一個暗示,指的是您使用該類的方式,當您只是在某種聲明中引用此類時可以使用它。它不會導入頭文件,因此編譯速度會更快一些。避免環形夾雜物也是有用的。

使用#import將在編譯期間實際導入頭文件,並且在您依賴所討論的類的行爲時需要。這就是編譯器知道哪些屬性,方法等可以安全使用的方式。

+0

確定這裏是我的疑惑...如果我想導入一個類,它實際上是因爲我需要使用該類的對象,使用它的方法之一或獲取一些變量值... 可以請你做一個什麼時候使用@class的實際例子?其他疑問是關於何時使用這些關鍵字。有些人說要在頭文件中導入類,有些人說要導入.m文件...有什麼區別? – mystudioos

+1

我在標頭文件中一直使用@class,我只是用一個類的類型聲明一個ivar或屬性(或其他)。在這種情況下,不需要導入標題。然而,在那個實現文件中,我需要導入標題來使用該類的一個實例。 –