Tip之Self vs _
在iOS中,定義的屬性可以通過self.property或者_property獲得.那到底應該用那種呢?
答案是都可以,各有不同,自行取捨.但是,一定要統一!統一!統一!
- init和alloc中不要使用self風格.所以在這兩個地方就只能使用下劃線風格,一定程度上造成風格的割裂.
- self風格走訊息轉發路線,效率比下劃線風格低.儘管絕大多數時候,這種效率可以忽略.
- self風格無法方便的知道getter/setter是否被重寫.當你部分屬性重寫了getter/setter而部分沒有的時候,開發人員很難通過程式碼知道是否有重寫.除非手動呼叫
[self property]
.而下劃線風格則不會. - self風格使得kvo正常工作.而下劃線則不可以.原因是,kvo本質上是在setter方法中新增will change和did change的notification.如果使用下劃線風格,根本不會進入方法進行,觸發notification也就無從談起.
- self風格在一定程度上能夠輔助屬性的追蹤.當一個屬性被非常繁瑣的呼叫/變更時.重寫getter並且打上日誌是一個很不錯的方式.尤其是維護不熟悉的程式碼,效果可能比斷點更好.
- 下劃線風格更短,更簡潔.
- 在block中,self風格和_風格都可能retain.造成迴圈引用.不過下劃線風格比較隱蔽,容易被忽略.
相關文章
- 面試Tip:Android優化之APK瘦身面試Android優化APK
- 面試Tip之Android優化工具Systrace面試Android優化
- python---之cls,和selfPython
- 深入理解python之selfPython
- 檔案包含之/proc/self/environ
- python---之物件導向selfPython物件
- a tip: (272字)
- tip-off
- &self 和 self 的區別
- rust語法super、self和SelfRust
- rman優化tip優化
- 面試Tip:Android優化之APP啟動優化面試Android優化APP
- object-c [self class] 和 [self _cmd]Object
- iOS開發小tipiOS
- new static ,new self ,self::, $this的一些理解
- iOS9適配TipiOS
- Self-Attention GAN 中的 self-attention 機制
- Oracle 管理的小tip.()(轉)Oracle
- Self-Delete程式之Delphi版本,終於搞定了。 (轉載) (轉)delete
- LVS 負載均衡之 VS/NAT 模式負載模式
- LVS 負載均衡之 VS/TUN 模式負載模式
- LVS 負載均衡之 VS/DR 模式負載模式
- 開源CMS之戰:WordPress vs Drupal vs JoomlaOOM
- 《SELF 自己》開發心路
- CSS align-selfCSS
- new self()與new static()
- Swift iOS : self sized cellSwiftiOSZed
- self.tableview.rekoaddataView
- 幾個 JavaScript 效能優化小 TipJavaScript優化
- jquery tip外掛程式碼例項jQuery
- linux history命令使用tip_ztLinux
- 轉載__sqlplus相關tipSQL
- 2018-01-16(iOS11之後self.navigationItem.titleView = self.searchView;上的按鈕無響應)iOSNavigationView
- block中self關鍵字的使用-防止self 被retain一次BloCAI
- vscode之C配置VSCode
- CSS之float vs position:absoluteCSS
- 自己動手搞一個tip 外掛
- Tip-Java的雙親委派機制Java