有什麼用
@class
&#import
之間的區別?我有一個情況 我得到一個生成錯誤, 和解決方案是使用@class
而不是#import
導入我的 類。目標C - 2個簡單的問題非原子是什麼意思?我何時 使用非原子來定義屬性, 什麼時候我可以避免它?
0
A
回答
2
@class
允許您爲稍後定義的類創建存根。例如:
MyOtherClass.h
@class MyClass;
@interface MyOtherClass : NSObject {
MyClass *myObject;
}
MyOtherClass.m
#include "MyOtherClass.h"
@interface MyClass : NSObject {
NSUInteger myInt;
}
#define
用於定義將被預處理器被替換的字符串。例如:
#define MY_INT 5
x = MY_INT;
將由預處理器被改寫:
x = 5;
0
斯科特·G有已經回答了你的問題,從字面上看,但如果正如亞當柯說,你意味着#進口,答案是@class不會導入類,而只是告訴編譯器,稍後有一個具有給定名稱的類將被提供(在我所記得的所謂的「延遲綁定」中)。
@class主要用於當您有兩個相互引用的類時,所以它們不能同時導入(這可能是編譯器錯誤的來源)。
但是,@class有一個明確的限制,即編譯器不允許您引用定義類的任何方法或屬性。但是通常你只需要在一個實現的.m文件中使用它們,那麼你可以在沒有任何問題的情況下導入這個類。
0
原子屬性是一個getter被保證返回一個有效的,有意義的值,即使在另一個線程上同時調用相關的setter。在處理方面比非原子性質成本更高,但對多線程代碼更安全。
0
如果你使用原子(這是默認值),它會產生一些神奇的效果,使你的代碼完全線程安全。
這個魔法花費了一些東西,這就是爲什麼你經常看到關鍵字非原子,如果人們不真正關心線程安全性以使代碼更快,他們就會使用它。
相關問題
- 1. 這個簡單的代碼(目標c)有什麼問題?
- 2. 一個簡單的目標C xcode內存管理問題
- 3. 目標C一個簡單的問題,關於內存泄露
- 4. 2簡單的Java問題
- 5. 簡單C問題
- 6. 目標C一個簡單的人類
- 7. 簡單的標籤問題
- 8. 簡單的C問題
- 9. c#一個簡單的調試問題
- 10. 上的C疊IMPL一個簡單的問題++標準庫
- 11. 目標C問題
- 12. 簡單的C/C++的問題
- 13. C#NHibernate簡單問題
- 14. C++簡單線程問題
- 15. C#簡單IF或問題
- 16. C++鏈表簡單問題
- 17. 簡單的目標C問題:我如何從其他類訪問變量?
- 18. sqlite3_prepare()的問題目標C
- 19. 問題的目標C
- 20. 2簡單而快速的C#特定的Visual Studio問題?
- 21. 混合問題目標C和C++在單個文件中
- 22. 簡單的問題
- 23. 簡單TableView問題
- 24. 兩個簡單的F#問題
- 25. 簡單的HTML目錄/ index.html問題
- 26. iOS NSNotification簡單的Xcode項目問題
- 27. 簡單的項目符號點問題
- 28. iphone/Objective C的(簡單)的問題
- 29. Objective-C的簡單的內存問題
- 30. 簡單的C#的foreach對LINQ問題
我認爲這是最好的做法,有單獨的問題。至於第二個問題,請參閱:http://stackoverflow.com/questions/588866/objective-c-properties-atomic-vs-nonatomic – Chase 2010-11-13 23:38:20
我相信它是#import你說,而不是#define? – koo 2010-11-13 23:39:21