IOS OC聲明變量在@interface括號(hào)中與使用@property的區(qū)別

1. @interface 和 @implementation
image.png
  • OC中的類必須包括兩部分,interface部分和implementation部分,這才是oc中的一個(gè)類的完整聲明;

  • OC中將成員變量和成員方法的聲明部分放置在interface部分中,包括繼承關(guān)系,protocal實(shí)現(xiàn)關(guān)系,都在interface里面的頭部進(jìn)行聲明,

  • 然后將實(shí)現(xiàn)部分放置在implementation部分中,相當(dāng)于是將類拆分成聲明和實(shí)現(xiàn)兩部分,這兩部分缺一不可,所以在OC中,不妨不要將interface叫做接口,直接叫做類聲明部分來得容易理解多了,簡(jiǎn)而言之,oc中interface是類的一個(gè)部分,和implementation共同組成一個(gè)完整的類。


2.@property 和@synthesize
@property關(guān)鍵字

@property 關(guān)鍵字可以自動(dòng)生成某個(gè)成員變量的setter和getter方法的聲明

@property int age;

編譯時(shí)遇到這一行,則自動(dòng)擴(kuò)展成下面兩句:

  • (void)setAge:(int)age;

  • (int)age;


@synthesize關(guān)鍵字

@synthesize關(guān)鍵字幫助生成成員變量的setter和getter方法的實(shí)現(xiàn)。

語法:@synthesize age=_age;

相當(dāng)于下面的代碼:

-(void)setAge:(int)age {
  _age=age;
}

- (int)age {
  Return _age;
}

聲明屬性時(shí)的寫法,總結(jié)出來有三中方式,不知道哪一種比較規(guī)范化,現(xiàn)在我把三種方式貼出來,然后再一一探討每個(gè)方式聲明屬性的區(qū)別。

  • 方式一:直接在@interface中的大括號(hào)中聲明。
@interface MyTest : NSObject{
    NSString *mystr;
}

使用方式一聲明的成員變量是只能在自己類內(nèi)部使用的,而不能在類的外部使用,(就是通過 類名. 點(diǎn)的方式是顯示不出來的).

  • 方式二:在@interface中聲明,然后再在@property中聲明。
@interface MyTest : NSObject {
    NSString *_mystr;
}
@property (strong, nonatomic) NSString *mystr; 

// 隨后在.m文件中加入 
@synthesize mystr = _myStr;

方式二的寫法是一種過時(shí)的聲明變量的方式,xcode在早期@systhesize沒有自動(dòng)合成屬性器之前,需要手寫getter與setter方法,下劃線從風(fēng)格上表明這是類的內(nèi)部變量,要是需要直接使用變量則需要使用get或者set的方式。

  • 方式三:直接用@property聲明
@interface MyTest : NSObject{
}
@property (strong, nonatomic) NSString *mystr;

// 隨后在.m文件中加入@synthesize mystr = _myStr;

方式三,它可以在類的外部訪問,在類的內(nèi)部可以通過下劃線+變量名或者self.變量名的方式來訪問。

在XCode目前有了自動(dòng)合成屬性器后,編譯器會(huì)自動(dòng)幫我們生成一個(gè)以下劃線開頭的的實(shí)例變量,所以我們不必去同時(shí)聲明屬性與變量。 我們可以直接用@property的方式來聲明一個(gè)成員屬性,在.m文件中使不使用@systhesize都無所謂,xcode會(huì)自動(dòng)幫你生成getter與setter.

個(gè)人比較喜歡使用方式三的方式,這是是蘋果開發(fā)模板所推薦的,也可以在.m文件中不加@systhesize看個(gè)人喜好吧。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 勢(shì)力紛華,不近者為潔,近之而不染者為尤潔;智械機(jī)巧,不知者為高,知之而不用者為尤高. PS:權(quán)勢(shì)和財(cái)力,不接近這些...
    204803閱讀 289評(píng)論 0 0
  • 只怪我不夠成熟,懂事。
    簡(jiǎn)書兜閱讀 157評(píng)論 0 0

友情鏈接更多精彩內(nèi)容