美文网首页
Swift-day9---属性

Swift-day9---属性

作者: Cooci_和谐学习_不急不躁 | 来源:发表于2018-05-05 13:44 被阅读18次

    Swift专栏---属性.这一篇简单给大家介绍一下属性.!!!喜欢的小伙伴,可以关注我.

    • 存储属性就是存储在特定类、结构体里的一个常量或者变量。
    /**
     存储属性就是存储在特定类、结构体里的一个常量或者变量。
     可以在定义存储属性的时候指定默认值。
     可以在构造过程中设置或者修改存储属性的值
     */
    
    class Person{
        //储存属性
        var name: String?
        var age: Int?
    }
    
    struct Model{
         //储存属性
        var p: Person?
        var index: Int
    }
    
    let p = Person()
    p.name = "Cooci"
    p.age = 18
    let model:Model = Model(p: p, index: 1)
    

    //开发中经常在加载属性利用懒加载 尤其在UI

     //lazy var 变量 : 类型 = {创建变量代码}()
    class MyView:UIView{
        lazy var label = UILabel()
        lazy var tableView:UITableView = { () -> UITableView in
            let tb = UITableView(frame: CGRect(x: 0, y: 0, width: 300, height: 300), style: .plain)
    //        tb.delegate = self;
    //        tb.dataSource = self;
            return tb
        }()
    }
    
    • 计算型属性:不直接储存值,而是通过提供一个getter方法来获取值,然后用一个可选项的setter来间接设置其他的属性或者变量的值
    class NewClass{
        var firstName = "伊丽莎白"
        var lastName = "Cooci"
        var fullName: String{
            get{
                return firstName+lastName
            }
        }
    }
    
    print(NewClass().fullName)
    
    //还可以定义set方法
    class Student{
        var book = "iOS"
        var changeBook:String{
            get{
                return book
            }
            set(newBook){
                book = newBook
            }
        }
    }
    let s = Student()
    print(s.changeBook)
    s.changeBook = "Swift"
    print(s.changeBook)
    
    //计算型属性能够帮助结构体修改属性
    struct Animal{
        var kind = ""
        var age = 0
        //如果要用方法修改结构提属性 需要使用mutating
        mutating func changeAnimalKind(newKind:String){
            self.kind = newKind
        }
        
        //上面的方法等同下面的计算型属性:说明计算型属性是对方法的封装
        var changeKind:String{
            get{
                return self.kind
            }
            set(newKind){
                self.kind = newKind
            }
        }
    }
    var ani = Animal(kind: "哺乳动物", age: 3)
    print(ani.kind)
    ani.changeAnimalKind(newKind: "两栖动物")
    print(ani.kind)
    ani.changeKind = "鱼类"
    print(ani.changeKind)
    
    • 属性观察器:非常有意思的特性,可以用来检测属性值的变化
    class example{
        var age : Int = 10{
            //即将赋值了就会来到这里
            willSet{
                print("example方法 要修改 age了 newValue \(newValue)")
            }
            //赋值完毕了就来这里
            didSet{
                print("example方法 赋值完毕 oldvalue == \(oldValue)")
            }
        }
    }
    
    let ex = example()
    print(ex.age)
    ex.age = 20
    print(ex.age)
    
    • 类型属性 ; 代表类的特性 通常用static修饰

      class CarClass{
          static var whole = 4
      }
      //类型属性不需要实例变量  直接通过类调用
      print(CarClass.whole)
      

    Swift-day1---HelloWord
    Swift-day2---基本数据类型
    Swift-day3---字符串
    Swift-day4---闭包(Closures)
    Swift-day5---集合类型--数组,集合,字典
    Swift-day6---函数
    Swift-day7---类
    Swift-day8---结构体,枚举

    持续更新!!!如有什么不足,还请不吝指出!谢谢!

    相关文章

      网友评论

          本文标题:Swift-day9---属性

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