就我所知,@synthesize實際上是產生Getters和Setters。但是@property然後在做什麼?它只是爲cool @synthesize魔術功能設置參數嗎?@property和@synthesize有什麼區別?
回答
你寫@property在頭文件
@property float value;
等同於:
- (float)value;
- (void)setValue:(float)newValue;
它獲得其它類的信息,你的類有這個方法
@synthesize phisicaly CREATE這些方法在課堂實施
@property
將該名稱聲明爲屬性。這意味着,它可以通過點語法訪問(object.value
)。
@synthetize
可以看作是一個宏,它創建了getter和setter方法。知道你可以重寫這些方法是有用的,即使你鍵入了@synthetize
。
然而,重要的是要注意,像往常一樣聲明的方法可以通過點語法來訪問,而不僅僅是屬性(儘管我不會推薦對不是getter或setter的任何東西使用點語法)。而且,更重要的是,如果沒有@synthesize,你的屬性不能被任何*方法訪問。如果你使用@property而不使用@synthesize,就像聲明getter和setter方法一樣,但從不實現它們。 – andyvn22 2009-08-09 18:31:05
@property
聲明getter和/或setter
@synthesize
實現它們。
有一個常見的誤解,即爲了實現使用@property指令創建的setter和getter,需要@synthesize指令,但事實並非如此。使用不帶@synthesize的@property指令仍然會生成setters/getters並允許使用點符號。但是,省略@synthesize指令將導致編譯器生成具有前導下劃線字符的相應實例變量,例如,屬性myVar將具有_myVar的實例變量。
使用前導下劃線是一種常見約定,它允許區分屬性和實例變量。屬性和實例變量共享相同的名稱也很常見,這是默認情況下@synthesize所做的。
這個問題沒有被回答。 – vikingosegundo 2014-07-15 11:17:26
- 1. @dynamic和@synthesize之間有什麼區別?
- 2. @property和@synthesize有什麼意義?
- 3. @property和@synthesize:爲什麼這兩個?
- 4. 在VB6中Property Set和Property Let有什麼區別?
- 5. PHPDOCS中`@ property`和`@ property-read`有什麼區別?
- 6. @property @synthesize
- 7. SPListItem [「property」]和SPListItem.Properties [「property」]之間的區別是什麼?
- 8. 何時需要@property和@synthesize?
- 9. 關於產品@property和@synthesize
- 10. 目標c中的@Property和{fields}有什麼區別?
- 11. 什麼時候你必須在iPhone SDK中使用@property和@synthesize?
- 12. Objective-C中使用的@property和@synthesize是什麼?
- 13. Objective-C:@property和@synthesize和內存泄漏
- 14. @property和@synthesize和內存錯誤
- 15. 有什麼區別`和$(Bash中有什麼區別?
- 16. ==和===有什麼區別?
- 17. ==和===有什麼區別?
- 18. 有什麼區別? :和||
- 19. ==和===有什麼區別?
- 20. '=='和'==='有什麼區別?
- 21. `&`和`ref`有什麼區別?
- 22. 有什麼區別:。!和:r!?
- 23. | 0和~~有什麼區別?
- 24. Appender和〜有什麼區別?
- 25. django形式的meta和property的區別是什麼?
- 26. 使用@property和@synthesize時防止泄漏
- 27. Objective-C:@property聲明沒有實現(@synthesize)
- 28. @property @synthesize @dynamic差異在Xcode
- 29. xtype和別名有什麼區別?
- 30. 有什麼區別
它不完全等價:使用@property還允許使用點符號,例如object.value,object.value = 1.0f; – Elliot 2011-09-06 00:56:52