OC 中setter與getter與實(shí)例變量的關(guān)系

0x00 引用自?禪與 Objective-C 編程藝術(shù)?與劉亞芳博客


0x01 什么是setter和getter

在OC里, 為實(shí)例變量賦值的方法稱(chēng)作setter(設(shè)置器)

讀取實(shí)例變量值的方法稱(chēng)作getter(訪(fǎng)問(wèn)器)


0x02 setter 和 getter的書(shū)寫(xiě)格式

OC里規(guī)定里setter和getter的書(shū)寫(xiě)格式

如果一個(gè)實(shí)例變量是 int age只嚣;或者int_age祈搜;

setter的書(shū)寫(xiě)格式如下?

- (void)setAge:(int)age;

即set+首字母大寫(xiě)的實(shí)例變量名(忽略下劃線(xiàn))

getter的書(shū)寫(xiě)格式如下到腥,?

-(int)age;

?即返回值類(lèi)型與變量類(lèi)型一致,方法名與實(shí)例變量名相同(忽略下劃線(xiàn))


0x03 setter和getter與實(shí)例變量的關(guān)系

無(wú)論setter還是getter內(nèi)部操作的是實(shí)例變量

每一個(gè)實(shí)例變量都需要一對(duì)setter和getter方法

0x04 setter和getter的好處

你應(yīng)該總是使用 setter 和 getter 方法訪(fǎng)問(wèn)屬性白嘁,除了init和dealloc方法捶箱。通常智什,使用屬性讓你增加了在當(dāng)前作用域之外的代碼塊的可能所以可能帶來(lái)更多副作用

你總應(yīng)該用 getter 和 setter 因?yàn)椋?br>

使用 setter 會(huì)遵守定義的內(nèi)存管理語(yǔ)義(strong,weak,copyetc...) 這回定義更多相關(guān)的在A(yíng)RC是錢(qián),因?yàn)樗冀K是相關(guān)的丁屎。舉個(gè)例子荠锭,copy每個(gè)時(shí)候你用 setter 并且傳送數(shù)據(jù)的時(shí)候,它會(huì)復(fù)制數(shù)據(jù)而不用額外的操作

KVO 通知(willChangeValueForKey,didChangeValueForKey) 會(huì)被自動(dòng)執(zhí)行

更容易debug:你可以設(shè)置一個(gè)斷點(diǎn)在屬性聲明上并且斷點(diǎn)會(huì)在每次 getter / setter 方法調(diào)用的時(shí)候執(zhí)行晨川,或者你可以在自己的自定義 setter/getter 設(shè)置斷點(diǎn)证九。

允許在一個(gè)單獨(dú)的地方為設(shè)置值添加額外的邏輯。

你應(yīng)該傾向于用 getter:

它是對(duì)未來(lái)的變化有擴(kuò)展能力的(比如共虑,屬性是自動(dòng)生成的)

它允許子類(lèi)化

更簡(jiǎn)單的debug(比如愧怜,允許拿出一個(gè)斷點(diǎn)在 getter 方法里面,并且看誰(shuí)訪(fǎng)問(wèn)了特別的 getter

它讓意圖更加清晰和明確:通過(guò)訪(fǎng)問(wèn) ivar_anIvar你可以明確的訪(fǎng)問(wèn)self->_anIvar.這可能導(dǎo)致問(wèn)題妈拌。在 block 里面訪(fǎng)問(wèn) ivar (你捕捉并且 retain 了 sefl 即使你沒(méi)有明確的看到 self 關(guān)鍵詞)

它自動(dòng)產(chǎn)生KVO 通知


0x05 Warning 不要在Init和dealloc中使用 getter和setter


你永遠(yuǎn)不能在 init (以及其他初始化函數(shù))里面用 getter 和 setter 方法拥坛,并且你直接訪(fǎng)問(wèn)實(shí)例變量。事實(shí)上一個(gè)子類(lèi)可以重載sette或者getter并且嘗試調(diào)用其他方法,訪(fǎng)問(wèn)屬性的或者 ivar 的話(huà)猜惋,他們可能沒(méi)有完全初始化丸氛。記住一個(gè)對(duì)象是僅僅在 init 返回的時(shí)候,才會(huì)被認(rèn)為是初始化完成到一個(gè)狀態(tài)了著摔。同樣在 dealloc 方法中(在 dealloc 方法中缓窜,一個(gè)對(duì)象可以在一個(gè) 不確定的狀態(tài)中)這是同樣需要被注意的。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末梨撞,一起剝皮案震驚了整個(gè)濱河市雹洗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卧波,老刑警劉巖时肿,帶你破解...
    沈念sama閱讀 221,576評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異港粱,居然都是意外死亡螃成,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)查坪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)寸宏,“玉大人,你說(shuō)我怎么就攤上這事偿曙〉” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,017評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵望忆,是天一觀(guān)的道長(zhǎng)罩阵。 經(jīng)常有香客問(wèn)我,道長(zhǎng)启摄,這世上最難降的妖魔是什么稿壁? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,626評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮歉备,結(jié)果婚禮上傅是,老公的妹妹穿的比我還像新娘。我一直安慰自己蕾羊,他們只是感情好喧笔,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,625評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著龟再,像睡著了一般溃斋。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上吸申,一...
    開(kāi)封第一講書(shū)人閱讀 52,255評(píng)論 1 308
  • 那天梗劫,我揣著相機(jī)與錄音享甸,去河邊找鬼。 笑死梳侨,一個(gè)胖子當(dāng)著我的面吹牛蛉威,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播走哺,決...
    沈念sama閱讀 40,825評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼蚯嫌,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了丙躏?” 一聲冷哼從身側(cè)響起择示,我...
    開(kāi)封第一講書(shū)人閱讀 39,729評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎晒旅,沒(méi)想到半個(gè)月后栅盲,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,271評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡废恋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,363評(píng)論 3 340
  • 正文 我和宋清朗相戀三年谈秫,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鱼鼓。...
    茶點(diǎn)故事閱讀 40,498評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡拟烫,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出迄本,到底是詐尸還是另有隱情硕淑,我是刑警寧澤,帶...
    沈念sama閱讀 36,183評(píng)論 5 350
  • 正文 年R本政府宣布嘉赎,位于F島的核電站置媳,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏曹阔。R本人自食惡果不足惜半开,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,867評(píng)論 3 333
  • 文/蒙蒙 一隔披、第九天 我趴在偏房一處隱蔽的房頂上張望赃份。 院中可真熱鬧,春花似錦奢米、人聲如沸抓韩。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,338評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)谒拴。三九已至,卻和暖如春涉波,著一層夾襖步出監(jiān)牢的瞬間英上,已是汗流浹背炭序。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,458評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苍日,地道東北人惭聂。 一個(gè)月前我還...
    沈念sama閱讀 48,906評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像相恃,于是被迫代替她去往敵國(guó)和親辜纲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,507評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容