15.1 Swift深浅拷贝

来源:互联网 发布:java get 中文乱码 编辑:程序博客网 时间:2024/06/02 00:58

        //结构体,值类型的赋值操作是深拷贝        struct Deep {            var copy:Int = 0        }                        // 类,引用类型的赋值操作是浅拷贝        class Shallow {            var copy:Int = 0        }                        /**         这就是深拷贝 ,但是是强引用         把d0完全复制给d1         d0 和 d1是两个不同的对象。内存地址不一样         */        var d0 =Deep.init()        var d1 = d0                          /**         /Users/xiaoyulong/Desktop/swift/swiftLearn14/swiftLearn14/RootVC/RootViewController.swift:55:9: 'unsafeAddressOf' is unavailable: Removed in Swift 3. Use Unmanaged.passUnretained(x).toOpaque() instead.         *///        unsafeAddressOf(d0 as AnyObject)                        d1.copy =9        print("d0.copy==\(d0.copy)")        print("d1.copy==\(d1.copy)")        /**         d0.copy==0         d1.copy==9         d0.copy 和 d1.copy不一样说明,他们两个就是不同的对象。说明是深拷贝         */                        print("d0.Address==\(Unmanaged<AnyObject>.passUnretained(d0as AnyObject).toOpaque())")                print("d1.Address==\(Unmanaged<AnyObject>.passUnretained(d1as AnyObject).toOpaque())")        /**         d0.Address==0x0000600000055180         d1.Address==0x0000600000055330         */                                                print("--------------------->")        /**         这就是浅拷贝  但是是强引用         */        var s0 =Shallow.init()        var s1 = s0                s1.copy =11        print("s0.copy==\(s0.copy)")        print("s1.copy==\(s1.copy)")        /**         s0.copy==11         s1.copy==11         s0.copy 和 s1.copy一样说明,他们两个就是同一个的对象。说明是浅拷贝         如果s1提前释放掉,s0不就变成野指针了吗?不用担心,有ARC引用机制啊。s0判断引用计数为0也会自动释放掉的。         */                        print("s0.Address==\(Unmanaged<AnyObject>.passUnretained(s0as AnyObject).toOpaque())")        print("s1.Address==\(Unmanaged<AnyObject>.passUnretained(s1as AnyObject).toOpaque())")        /**         s0.Address==0x0000600000421b20         s1.Address==0x0000600000421b20         */                /**          这些都是系统来替我们做的,程序员不需要做。         */


0 0
原创粉丝点击