self.和self->

在訪問對象的時候,self.和self->是一樣的都是訪問對象本身。當對這個對象聲明屬性,進行懶加載的時候self.屬性,等于調(diào)用懶加載方法,而self->屬性,就是調(diào)用這個屬性的對象本身相當于_的作用

self.?是通過屬性(property)訪問對象成員的語法。屬性是 Objective - C 提供的一種封裝實例變量(ivar)的機制,它會自動生成對應(yīng)的?getter?和?setter?方法。使用?self.?實際上是調(diào)用了屬性的?getter?或?setter?方法。

self->?是直接訪問對象實例變量(ivar)的語法。實例變量是類中定義的變量,用于存儲對象的狀態(tài)。使用?self->?可以繞過屬性的?getter?和?setter?方法,直接訪問實例變量。


訪問方式:self.?是通過屬性的?getter?和?setter?方法訪問對象成員,而?self->?是直接訪問實例變量。

封裝性:self.?提供了更好的封裝性,隱藏了實例變量的具體實現(xiàn);self->?則直接暴露了實例變量,封裝性較差。

內(nèi)存管理:使用?self.?時,系統(tǒng)會根據(jù)屬性的修飾符自動處理內(nèi)存管理;使用?self->?時,需要手動管理內(nèi)存。

使用建議

一般情況下,建議優(yōu)先使用?self.?來訪問對象成員,因為它提供了更好的封裝性和自動內(nèi)存管理。

只有在對性能有嚴格要求或者有特殊需求時,才考慮使用?self->?直接訪問實例變量。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

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