1
A
回答
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
指令所描述的類的頭,你可以安全地引用類的循環。
2
@class
通常在.h文件中用作前向聲明。它所做的是說一個名爲ClassName的類實際上存在,而不必導入和讀取ClassName.h文件,因爲它很可能會被.m文件導入
相關問題
- 1. 我知道這個表達式可以簡化 - .NET
- 2. 可以知道
- 3. 命題邏輯,不知道我是否可以在這裏問這個問題
- 4. 看看這個代碼,讓我知道如果有什麼我可以改變
- 5. 有人可以幫我解決這個錯誤信息嗎?我不知道
- 6. 我想知道如何可以輸出上的SQL這些值
- 7. 我不知道這個查詢
- 8. 我不知道如何處理這個
- 9. 我不知道這個聲明
- 10. 我不知道這個符號PHP
- 11. 我不知道這個數組
- 12. 我不知道這個關閉
- 13. 我可以知道算法類型嗎?
- 14. 我可以知道什麼叫applicationShouldHandleReopen?
- 15. 從軌道觀察者的這段代碼中我們可以知道什麼?
- 16. ,我可以知道我將使用哪個端口號嗎?
- 17. 有誰知道我可以在哪裏定義這個URI參數?
- 18. 任何人都知道我可以擺脫這個錯誤信息?
- 19. 有誰知道我在哪裏可以找到這個HTML代碼?
- 20. 我想知道這個查詢方法是否可行?
- 21. 爲什麼我得到FileNotFoundException?我可以看到這個位置的文件,所以我知道它存在
- 22. 我不知道這個「:」是否必要,這個「:」代表什麼
- 23. 所以,我認爲這是基本的,但我需要知道
- 24. 我可以知道一個JavaScript文件是否已被執行?
- 25. 我可以知道AppleScript對象是否具有某個屬性?
- 26. 我不知道JMSExceptions是什麼,以及如何處理它們。有人可以向我解釋這個嗎?
- 27. 可以``__restrict__這個``不知何故?
- 28. c - 爲什麼我會得到這個SIGSEGV?我怎麼知道一個結構可以得到多少內存?
- 29. 我可以將這個軌道計算推入數據庫嗎?
- 30. 如何解決這個錯誤?我不能運行它,所以我不知道?
+1關於循環引用的一個好處。這真正說明了'@ class'和'#import' – 2010-09-06 17:48:21
+1之間的區別,因爲同樣的原因,修正了你的語法錯誤。 – jer 2010-09-06 18:00:13
這不是他在說的。考慮你定義兩個類別A和B,每個類別都有一個ivar。由於循環性質,您必須聲明一個爲'id'或使用前向聲明,gcc在這種情況下僅表現得很愚蠢。此外,如果您不需要訪問其成員,我通常不推薦#import'ng文件,因爲沒有必要使用「@ class」。 – jer 2010-09-06 18:15:24