給大家舉個(gè)例子看看,應(yīng)該就會(huì)明白的.
- 聲明一個(gè)myButton屬性,在.m文件中可以直接的使用_myButton實(shí)例變量,也可通過(guò)屬性self.myButton都是一樣的.
注意這里的self.myButton其實(shí)是調(diào)用的myButton屬性的getter/setter方法.這與C++中點(diǎn)的使用是有區(qū)別的,C++中的點(diǎn)可以直接訪問(wèn)成員變量(實(shí)例變量).
- 聲明的一個(gè)屬性,編譯器會(huì)自動(dòng)為你生成以下劃線開(kāi)頭的實(shí)例變量黔州,不需要自己手動(dòng)再去寫(xiě)實(shí)例變量汰现。而且也不需要在.m文件中寫(xiě)@synthesize myButton;也會(huì)自動(dòng)為你生成setter灾炭,getter方法。@synthesize的作用就是讓編譯器為你自動(dòng)生成setter與getter方法跟磨。
@synthesize 還有一個(gè)作用析既,可以指定與屬性對(duì)應(yīng)的實(shí)例變量.
如果在一個(gè)類的.m文件中出現(xiàn)self.name這樣的表達(dá)式是錯(cuò)誤的.xcode會(huì)提示你使用->,改成self->name就可以了.因?yàn)?strong>oc中點(diǎn)表達(dá)式是表示調(diào)用方法,如果沒(méi)有聲明name這個(gè)屬性就不能調(diào)用.
oc語(yǔ)法關(guān)于點(diǎn)表達(dá)式的說(shuō)明:”點(diǎn)表達(dá)式(.)看起來(lái)與C語(yǔ)言中的結(jié)構(gòu)體訪問(wèn)以及Java語(yǔ)言匯總的對(duì)象訪問(wèn)有點(diǎn)類似,如果點(diǎn)表達(dá)式出現(xiàn)在等號(hào) = 左邊韩脑,該屬性名稱的setter方法將被調(diào)用。如果點(diǎn)表達(dá)式出現(xiàn)在右邊见坑,該屬性名稱的getter方法將被調(diào)用嚷掠。”
簡(jiǎn)單的說(shuō)就是:在oc中點(diǎn)表達(dá)式其實(shí)就是調(diào)用對(duì)象的setter和getter方法的一種快捷方式,而且編譯器會(huì)直接給屬性提供對(duì)應(yīng)的實(shí)例變量(當(dāng)然也可以手動(dòng)指定該屬性所對(duì)應(yīng)的實(shí)例變量)和getter/setter方法.