Swift中Self的使用

Swift中Self的使用

  1. 用于消除訪問屬性調(diào)用方法時所產(chǎn)生的歧義。
  • 當(dāng)函數(shù)的參數(shù)名和自身的屬性名同名時,例如:
/*
使用self指明被訪問的是自身屬性還是參數(shù)
*/
class AClass {
    var greeting: String
    init(greeting: String) {
     // 使用self區(qū)分屬性和參數(shù)
        self.greeting = greeting
    }
}
  • 便利構(gòu)造函數(shù)中調(diào)用自身的指定構(gòu)造函數(shù)時,例如:
    convenience init() {
        /*
        必須使用self,因為按照二段構(gòu)造的規(guī)則,
        在第一階段初始化完成之前,
        無法使用self,
        而且由于面向?qū)ο笳Z言的特性,
        所有的初始化方法名都是init,
        沒有self,系統(tǒng)不知道調(diào)用誰的init
        */
        self.init()
        // 進(jìn)行初始化
    }
  • 閉包中訪問自身屬性和調(diào)用自身方法時,例如:
        UIView.animateWithDuration(0.25) { () -> Void in
            /*
            閉包可能被拋出,其必須知道其中的方法和屬性屬于誰,
            所以要用self
            */
            self.layoutIfNeeded()
        }
  1. mutating修飾的值類型方法中,修改self屬性時,例如:
struct Point {
    var x = 0.0, y = 0.0
    mutating func moveByX(deltaX: Double, y deltaY: Double) {
        self = Point(x: x + deltaX, y: y + deltaY)
    }
}
最后編輯于
?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

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