Swift方法

  • 在 Objective-C 中,类是唯一能定义方法的类型。Swift中类/结构体/枚举都能定义方法。在 Swift 语言中,实例方法是属于某个特定类、结构体或者枚举类型实例的方法。

  • 实例方法特性

    • 实例方法要写在它所属的类型的前后大括号({})之间
    • 实例方法能够隐式访问它所属类型的所有的其他实例方法和属性
    • 实例方法只能被它所属的类的某个特定实例调用
    • 实例方法不能脱离于现存的实例而被调用
  • 函数的参数可同时有内部参数名(内部使用)和外部参数名(调用函数时使用)。当只有内部参数名时,编译器会为参数自动创建一个和内部参数名相同的外部参数名。

  • 实例方法的参数前面加"_",则调用时必须省略外部名称

class Person {
    var _name: String = "HaRi"
    var _age: Int = 26
    //如果不希望某个参数作为外部参数使用, 可以在参数前面加上 _ , 忽略外部参数
    func setName(name: String, _ age: Int)
    {
        _name = name
        _age = age
    }
    func show()
    {
        print("name = \(_name) age = \(_age)")
    }
}
var p = Person()
p.show()

// p.setName(name:"xiaoHan", age:100) Error!
p.setName(name: "hjq", 88) //正确姿势
p.show()
  • 类中用class/static关键字来声明类方法
class Person {
    var _name:String = "kong"

    // 实例方法
    func sayHello(){
        println("say \(_name)")
    }

    // 类方法
    class func sayHi() {
        println("class method")
    }
}

// 调用 实例方法
var per = Person()
per.sayHello()

// 调用类方法
Person.sayHi()

以上也可以用static声明类方法,static声明的类方法不可被子类重写

     static func sayHi() {
        println("class method")
    }
  • 结构体和枚举中用static关键字声明类方法
struct Person4 {
    var name: String = "HanJunqiang"
    static var card: String = "1234567"
    func show()
    {
        print("name = \(name) card = \(Person4.card)")
    }

    static func staticShow()
    {
        //类方法中没有self
        //静态方法对应OC中的+号方法, 和OC一样在类方法中不能访问非静态属性
        print("card = \(Person4.card)")
    }
}

var p4 = Person4()
p4.show()
Person4.staticShow()

你可能感兴趣的:(Swift方法)