IOS OC聲明變量在@interface括號中與使用@property的區別

    剛開始接觸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

發佈了31 篇原創文章 · 獲贊 22 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章