剛開始接觸OC再看別人寫的代碼的時候,常常困惑於人家在聲明屬性時的寫法,總結出來有三中方式,不知道哪一種比較規範化,現在我把三種方式貼出來,然後再一一探討每個方式聲明屬性的區別。
方式一:直接在@interface中的大括號中聲明。
@interface MyTest : NSObject{
NSString *mystr;
}
方式二:在@interface中聲明,然後再在@property中聲明。
@interface MyTest : NSObject{
NSString *_mystr;
}
@property (strong, nonatomic) NSString *mystr;
隨後在.m文件中加入
@synthesize mystr = _myStr;
方式三:直接用@property聲明
@interface MyTest : NSObject{
}
@property (strong, nonatomic) NSString *mystr;
隨後在.m文件中加入@synthesize mystr = _myStr;
==========================我是分割線============================
首先來說一下方式一根方式三的區別,使用方式一聲明的成員變量是只能在自己類內部使用的,而不能在類的外部使用,(就是通過 類名. 點的方式是顯示不出來的),方式三則相反,它可以在類的外部訪問,在類的內部可以通過下劃線+變量名或者self.變量名的方式來訪問。
方式二的寫法是一種過時的聲明變量的方式,xcode在早期@systhesize沒有自動合成屬性器之前,需要手寫
getter與setter方法,下劃線從風格上表明這是類的內部變量,要是需要直接使用變量則需要使用get或者set的方式。
在XCode目前有了自動合成屬性器後,編譯器會自動幫我們生成一個以下劃線開頭的的實例變量,所以我們不必去同時聲明屬性與變量。 我們可以直接用@property的方式來聲明一個成員屬性,在.m文件中使不使用@systhesize都無所謂,xcode會自動幫你生成getter與setter.
個人比較喜歡使用方式三的方式,這是是蘋果開發模板所推薦的,也可以在.m文件中不加@systhesize看個人喜好吧。
轉載處:https://blog.csdn.net/shenjie12345678/article/details/39052659