在Xcode中做什麼@synthesize
和@property
?請用簡單的術語提供解釋?@property @synthesize
回答
你問簡單來說:
@property在 類的頭聲明屬性
@property (nonatomic, retain) NSString *myString;
@synthesize創建是你的setter和 吸你的財產(訪問 方法)
沒有合成你必須寫 自己的setter和getter FPGA實現,像getMyString或 setMyString(利用你的財產的第一 字符)
山姆:只是一個建議:http://www.cocoadevcentral.com/d/learn_objectivec/是一個非常堅實的資源,瞭解像屬性這樣的基礎知識。
祝你好運!
屬性和合成訪問器是Objective-C 2.0中的新功能。
當你聲明一個@property
時,你聲明瞭一個實例var。然後你訪問該方法的屬性(即getter和setter)。
如果您有興趣,還有@dynamic
訪問器。
你應該真的在這做你的功課。蘋果有這個漂亮的pdf。
你可以把我鏈接到pdf嗎? – 2010-01-09 08:52:58
我爲你搜索:http://developer.apple.com/mac/library/documentation/Cocoa/Conceptual/ObjectiveC/ObjC。pdf – Eimantas 2010-01-09 08:57:39
歡呼Eimantas – 2010-01-09 09:27:15
默認情況下,我們所有的變量都是私有的,所以我們不能從類中取出。 如果我們想在課堂外使用我們的實例變量。 當你聲明一個@property
時,你聲明瞭一個實例var。然後你訪問該方法的屬性(即getter和setter)。
如果您有興趣,還有@dynamic
訪問器。
想想都Objective-C的魔術只是一個「聰明宏」,像一個「智能#define語句:」如果你注意的是始終在.h文件 @property, @synthesize總是在M檔。 所以在後臺 @property(無論)NSString * myString;
成爲2個方法和一個私有變量的聲明;
void set_myString:(NSString *) str;
(NSString*) get_myString;
聲明在頭文件
讓他們做一些事情,當你在 @synthesize的myString鍵入他們實現加入到M檔; 變成類似 void set_myString:(NSString *)str { myString = str; }
(NSString *) get_myString
{
return (myString);
}
但它取決於如果你說「保留」,「強」或「弱」 它要麼指針剛剛回歸的myString或將在myString的複製到一個新的比這 更聰明對象
因此,所有這些都是由編譯器通過閱讀您的聲明自動完成的。 這是非常有用的,可以節省很多時間
它只是在它自己的類中設置屬性的設置器變量名稱。 例如讓我說我有這個:@property (nonatomic, copy) NSArray* viewControllers;
那麼,如果我想訪問setter _viewController我不會設置合成變量。 但如果我想通過名稱viewController
而不是_viewController
訪問viewController變量,我會做@synthesize viewController;
。
如果我想用它作爲一個完全不同的名字,我可以這樣做@synthesize viewControllers = viewControlololer;
但這只是一個setter。你會注意到[self viewControllers]
只有作品,而不是[self viewControlololer];
所以我不明白爲什麼每個人都寫集屬性的「setter和getter」。它根本不會改變getter變量......除非這意味着[self viewController]
意識到viewControlololer
(顯然)。
其實屬性是隱式或顯式合成的。屬性是隱式合成的。因此,除非想將變量的名稱更改爲與_property_name不同的名稱,否則不需要使用合成。
還有其他用例,例如如果你不想讓實例變量支持你的屬性。
通過使用@synthesized指令顯式合成屬性。
(解答摘自大書呆子牧場指南)
- 1. @property和@synthesize
- 2. 關於@property和@synthesize
- 3. 關於產品@property和@synthesize
- 4. @property @synthesize @dynamic差異在Xcode
- 5. 何時需要@property和@synthesize?
- 6. IOS @property,@synthesize內存泄漏
- 7. Objective-C:@property和@synthesize和內存泄漏
- 8. Objective-C:@property聲明沒有實現(@synthesize)
- 9. @property和@synthesize和內存錯誤
- 10. 使用@property和@synthesize時防止泄漏
- 11. @property和@synthesize有什麼意義?
- 12. 關於@synthesize [property name]語法的問題
- 13. @property和@synthesize的工作方式如何?
- 14. @property和@synthesize有什麼區別?
- 15. @property和@synthesize:爲什麼這兩個?
- 16. 使用@property和@synthesize的任何錯誤
- 17. 困惑於@property和@synthesize如何在iOS 7中工作
- 18. ARC和實例變量沒有@property和@synthesize
- 19. 使用@property和@synthesize時得到不正確的值
- 20. Objective-C中使用的@property和@synthesize是什麼?
- 21. @property,@synthesize並釋放Objective-C中的對象
- 22. 什麼時候你必須在iPhone SDK中使用@property和@synthesize?
- 23. 發佈一切你有@property保留@synthesize爲?
- 24. 問題有關與@property @synthesize釋放對象
- 25. 目的-C:`@synthesize FOOBAR;``與FOOBAR @synthesize = _fooBar;`
- 26. EXC_BAD_ACCESS @synthesize
- 27. 對象 - @synthesize
- 28. @synthesize的方法?
- 29. @synthesize in Objective-c?
- 30. @synthesize羽毛= _feathers?
是的,但我的應用程序沒有它運行良好。那麼,他們爲什麼需要? – 2010-01-09 08:45:25
他們不需要*他們只是用於節省時間和避免錯誤。 – 2010-01-09 08:46:58
在桌面上可以使用手動內存管理,也可以使用垃圾收集器。手動管理工作正常,但使用垃圾收集很有用,節省時間並減少錯誤。 – Abizern 2011-06-03 01:16:04