3 回答

TA貢獻(xiàn)1906條經(jīng)驗(yàn) 獲得超3個(gè)贊
如果您具有ivar的已定義屬性,則應(yīng)使用它而不是直接訪問ivar。這就允許子類重寫setter / getter并做一些與從ivar中獲取值不同的事情。
唯一的例外是init方法和dealloc。

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊
使用
[[self foundArray] addObject:eachObject];
您只需向getter方法添加額外的調(diào)用,我認(rèn)為在大多數(shù)情況下這是不必要的。另一方面,除非您實(shí)現(xiàn)自己的自定義getter并做一些奇怪的事情,否則此構(gòu)造的開銷很小,因此在我看來,這實(shí)際上只是樣式問題。(我個(gè)人不會(huì)在這里使用財(cái)產(chǎn))

TA貢獻(xiàn)1719條經(jīng)驗(yàn) 獲得超6個(gè)贊
使用self.ivar也有一些內(nèi)存清理問題。尤其是 您保留了其他階級(jí)擁有的財(cái)產(chǎn)。然后,您將獲得任何新對(duì)象,并想要更改對(duì)self.ivar = newObject的引用。如果不使用self.ivar,則當(dāng)newObject也由他人擁有時(shí),它可能具有錯(cuò)誤的訪問權(quán)限。默認(rèn)的setter會(huì)檢查引用(如果不是nil),則釋放舊值并將新的ivar設(shè)置為其新值。今天我在沒有對(duì)象的情況下使用沒有自我的東西,并且陷入了這個(gè)問題。簡(jiǎn)而言之,如果對(duì)象是共享的,請(qǐng)使用self.ivar ...
- 3 回答
- 0 關(guān)注
- 461 瀏覽
添加回答
舉報(bào)