美文网首页
日常随笔第九弹-类/构造函数/析构函数

日常随笔第九弹-类/构造函数/析构函数

作者: 没有北方的南方 | 来源:发表于2016-07-22 18:24 被阅读16次

    类及构造函数/析构函数

    class rectangel {//定义一个类
        var width : Double
        var height : Double
        var x : Double
        var y : Double
        static var i = 0
        init (){
            width = 0
            height = 0
            x = 0
            y = 0
        }//定义构造函数进行初始化,自定义构造函数,编译器将不再生成无参的构造函数
        func fat(change: Double) -> Double {
            width += change
            return width
        }//定义成员方法(变宽)
        
        class func infoprint(){//定义类方法
            i = 23
            print(i)
            print("谢谢观赏")
        }
        deinit{//析构函数:反初始化,释放已拥有的资源
            print("资源已经释放")
        }
    }
    
    //与结构体的区别:
    //1.用let定义的结构体变量,成员不能修改
    //2.结构体是值类型,在赋值的时候发生复制
    //3.类是引用类型
    //4.结构体成员方法需要加上mutating才能修改成员
    //5.类中的成员变量构造函数默认没有参数,必须初始化
    
    
    var xx1 = rectangel()//创建对象,在堆上分配空间
    xx1.height = 30
    xx1.width = 20
    xx1.x = 50
    xx1.y = 60
    print(xx1.height, xx1.width, xx1.x, xx1.y)
    
    
    //默认是为strong引用,可添加weak变为弱引用,(弱引用需要使用!取成员)
    weak var xx2 = xx1
    xx2!.height = 90
    xx2!.width = 25
    rectangel.i = 14//静态成员用类名调用
    print(xx2!.height, xx2!.width, xx2!.x, xx2!.y, rectangel.i)
    
    xx1 = rectangel()//当再次创建时,若无强引用,则原xx1中的资源将会被释放
    
    var xx3 = rectangel()
    xx3.height = 100
    xx3.width = 35
    xx3.x = 22
    print(xx3.height, xx3.width, xx3.x, xx3.y)
    
    rectangel.infoprint()
    

    相关文章

      网友评论

          本文标题:日常随笔第九弹-类/构造函数/析构函数

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