Tip之Self vs _

在iOS中,定義的屬性可以通過self.property或者_(dá)property獲得.那到底應(yīng)該用那種呢?

答案是都可以,各有不同,自行取舍.但是,一定要統(tǒng)一!統(tǒng)一!統(tǒng)一!

  • init和alloc中不要使用self風(fēng)格.所以在這兩個(gè)地方就只能使用下劃線風(fēng)格,一定程度上造成風(fēng)格的割裂.
  • self風(fēng)格走消息轉(zhuǎn)發(fā)路線,效率比下劃線風(fēng)格低.盡管絕大多數(shù)時(shí)候,這種效率可以忽略.
  • self風(fēng)格無(wú)法方便的知道getter/setter是否被重寫.當(dāng)你部分屬性重寫了getter/setter而部分沒有的時(shí)候,開發(fā)人員很難通過代碼知道是否有重寫.除非手動(dòng)調(diào)用[self property].而下劃線風(fēng)格則不會(huì).
  • self風(fēng)格使得kvo正常工作.而下劃線則不可以.原因是,kvo本質(zhì)上是在setter方法中添加will change和did change的notification.如果使用下劃線風(fēng)格,根本不會(huì)進(jìn)入方法進(jìn)行,觸發(fā)notification也就無(wú)從談起.
  • self風(fēng)格在一定程度上能夠輔助屬性的追蹤.當(dāng)一個(gè)屬性被非常繁瑣的調(diào)用/變更時(shí).重寫getter并且打上日志是一個(gè)很不錯(cuò)的方式.尤其是維護(hù)不熟悉的代碼,效果可能比斷點(diǎn)更好.
  • 下劃線風(fēng)格更短,更簡(jiǎn)潔.
  • 在block中,self風(fēng)格和_風(fēng)格都可能retain.造成循環(huán)引用.不過下劃線風(fēng)格比較隱蔽,容易被忽略.
最后編輯于
?著作權(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)容

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