剛開(kāi)始接觸OC再看別人寫(xiě)的代碼的時(shí)候皮假,常常困惑于人家在聲明屬性時(shí)的寫(xiě)法骂维,總結(jié)出來(lái)有三中方式,不知道哪一種比較規(guī)范化航闺,現(xiàn)在我把三種方式貼出來(lái),然后再一一探討每個(gè)方式聲明屬性的區(qū)別潦刃。
方式一:直接在@interface中的大括號(hào)中聲明。
@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;
==========================我是分割線============================
首先來(lái)說(shuō)一下方式一根方式三的區(qū)別,使用方式一聲明的成員變量是只能在自己類內(nèi)部使用的略荡,而不能在類的外部使用,(就是通過(guò) 類名. 點(diǎn)的方式是顯示不出來(lái)的)汛兜,方式三則相反通今,它可以在類的外部訪問(wèn)肛根,在類的內(nèi)部可以通過(guò)下劃線+變量名或者self.變量名的方式來(lái)訪問(wèn)。
方式二的寫(xiě)法是一種過(guò)時(shí)的聲明變量的方式派哲,xcode在早期@systhesize沒(méi)有自動(dòng)合成屬性器之前掺喻,需要手寫(xiě)
getter與setter方法,下劃線從風(fēng)格上表明這是類的內(nèi)部變量感耙,要是需要直接使用變量則需要使用get或者set的方式。
在XCode目前有了自動(dòng)合成屬性器后即硼,編譯器會(huì)自動(dòng)幫我們生成一個(gè)以下劃線開(kāi)頭的的實(shí)例變量,所以我們不必去同時(shí)聲明屬性與變量谦絮。 我們可以直接用@property的方式來(lái)聲明一個(gè)成員屬性,在.m文件中使不使用@systhesize都無(wú)所謂层皱,xcode會(huì)自動(dòng)幫你生成getter與setter.
個(gè)人比較喜歡使用方式三的方式,這是是蘋(píng)果開(kāi)發(fā)模板所推薦的草冈,也可以在.m文件中不加@systhesize看個(gè)人喜好吧。