2010-09-06 54 views
1

的正確使用任何人都可以使用@class指出文檔或詳細討論。 我一直在使用這個,但還沒有真正完全理解它。 我想了解更多,並充分理解它。@class我可以知道這個

預先感謝您。

回答

4

@class用於declare一類。基本上告訴編譯器:「嘿,在源代碼中有一個類名爲的地方,其中。定義會晚一些,但現在讓我使用它的名稱作爲指針類型。」

參見:
developer.apple.com
SO: Class vs Import
MacRumors

注:由於Richard J. Ross III指出的,@class關鍵字允許循環引用(當兩個類都依賴於每-)而不破壞構建。

4
// header.h 
#import <Foundation/Foundation.h> 
@class reference; 

@interface class 
... 
@end 
// implementation.m 
#import "header.h" 
#import "reference.h" 

@implementation class 
... 
@end 

你用這個當您有多個文件之間循環引用的類,並且您導入包含由@class指令所描述的類的頭,你可以安全地引用類的循環。

+1

+1關於循環引用的一個好處。這真正說明了'@ class'和'#import' – 2010-09-06 17:48:21

+0

+1之間的區別,因爲同樣的原因,修正了你的語法錯誤。 – jer 2010-09-06 18:00:13

+0

這不是他在說的。考慮你定義兩個類別A和B,每個類別都有一個ivar。由於循環性質,您必須聲明一個爲'id'或使用前向聲明,gcc在這種情況下僅表現得很愚蠢。此外,如果您不需要訪問其成員,我通常不推薦#import'ng文件,因爲沒有必要使用「@ class」。 – jer 2010-09-06 18:15:24

2

@class通常在.h文件中用作前向聲明。它所做的是說一個名爲ClassName的類實際上存在,而不必導入和讀取ClassName.h文件,因爲它很可能會被.m文件導入

相關問題