就我所知,@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. Private Dim和Private Property有什麼區別?
- 4. @property和@synthesize:爲什麼這兩個?
- 5. @property和@synthesize
- 6. 在VB6中Property Set和Property Let有什麼區別?
- 7. PHPDOCS中`@ property`和`@ property-read`有什麼區別?
- 8. 關於@property和@synthesize
- 9. @property @synthesize
- 10. 這2 @synthesize模式和建議哪個有什麼區別?
- 11. SPListItem [「property」]和SPListItem.Properties [「property」]之間的區別是什麼?
- 12. 關於產品@property和@synthesize
- 13. 何時需要@property和@synthesize?
- 14. 目標c中的@Property和{fields}有什麼區別?
- 15. Objective-C中使用的@property和@synthesize是什麼?
- 16. 什麼時候你必須在iPhone SDK中使用@property和@synthesize?
- 17. Objective-C:@property和@synthesize和內存泄漏
- 18. @property和@synthesize和內存錯誤
- 19. iPOJO:@ServiceProperty和@Property的區別
- 20. 有什麼區別`和$(Bash中有什麼區別?
- 21. 有什麼區別? :和||
- 22. &&和||有什麼區別?
- 23. 「/」和「/ *」有什麼區別?
- 24. 有什麼區別:。!和:r!?
- 25. ==和===有什麼區別?
- 26. Appender和〜有什麼區別?
- 27. $ @和$ *有什麼區別?
- 28. is和=有什麼區別?
- 29. #.00和#。##有什麼區別?
- 30. `==`和`is`有什麼區別?
它不完全等價:使用@property還允許使用點符號,例如object.value,object.value = 1.0f; – Elliot 2011-09-06 00:56:52