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)
}
}