iOS中self.xxx 和 _xxx 下划线的区别
property (nonatomic,copy) NSString *propertyName; self.propertyName 是對屬性的拜訪; _propertyName 是對部分變量的拜訪。 其1、@property的聲明中,編譯器正在天生g]?
@property (nonatomic,copy) NSString *propertyName;
self.propertyName 是對屬性的訪問;
_propertyName 是對局部變量的訪問。
其一、@property的聲明中,編譯器在生成getter,setter方法時是有優(yōu)先級的,它首先查找當前的類中用戶是否已定義屬性的getter,setter方法,如果有,則編譯器會跳過,不會再生成,使用用戶定義的方法。?
也就是說你在使用self.propertyName 時是在調(diào)用一個getter方法。
self.propertyName 會讓計數(shù)器+1;
其二、_propertyName,是直接調(diào)用變量,不通過getter方法。 ?
_propertyName是類似于self->_propertyName。
用self.propertyName 是更好的選擇,因為這樣可以兼容懶加載,同時也避免了使用下劃線的時候忽視了self這個指針,后者容易在block中造成循環(huán)引用。
同時,使用 _是獲取不到父類的屬性,因為它只是對局部變量的訪問。
最后總結(jié):self方法實際上是用了get和set方法間接調(diào)用,下劃線方法是直接對變量操作。
轉(zhuǎn)載于:https://www.cnblogs.com/lihaibo-Leao/p/5539622.html
總結(jié)
以上是生活随笔為你收集整理的iOS中self.xxx 和 _xxx 下划线的区别的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 互联网日报 | 7月11日 星期日 |
- 下一篇: C# 多种方式发送邮件(附帮助类)