美文网首页
Swift方法

Swift方法

作者: 奔跑的鸿 | 来源:发表于2020-06-26 14:50 被阅读0次
    • 在 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方法

          本文链接:https://www.haomeiwen.com/subject/vecufktx.html