Swift中Self的使用
用於消除訪問屬性,調用方法時所產生的歧義。
當函數的參數名和自身的屬性名同名時,例如:
/* 使用self指明被訪問的是自身屬性還是參數 */ class AClass { var greeting: String init(greeting: String) { // 使用self區分屬性和參數 self.greeting = greeting } }
在便利構造函數中調用自身的指定構造函數時,例如:
convenience init() { /* 必須使用self,因為按照二段構造的規則, 在第一階段初始化完成之前, 無法使用self, 而且由於面向對象語言的特性, 所有的初始化方法名都是init, 沒有self,系統不知道調用誰的init */ self.init() // 進行初始化 }
閉包中訪問自身屬性和調用自身方法時,例如:
UIView.animateWithDuration(0.25) { () -> Void in /* 閉包可能被拋出,其必須知道其中的方法和屬性屬於誰, 所以要用self */ self.layoutIfNeeded() }
被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) } }
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!