天天看點

14.6 Swift中weak解決循環強引用

        class Person {

            let name:String

            init(name:String) {

                self.name = name

            }

            var apartment:Apartment?

            deinit {

                print("\(name) is being deininialized")

            }

        }

        class Apartment {

            let number:Int

            init(number:Int) {

                self.number = number

            }

            var tenant:Person?

            deinit {

                print("Apartment #\(number) is being deininialized")

            }

        }

        // 這是強引用,不要認為可選類型就是弱引用啊,隻有通過weak unowned才是弱引用

        var john:Person?

        var number73:Apartment?

        john = Person.init(name:"Johu Appleseed")

        number73 = Apartment.init(number:73)

14.6 Swift中weak解決循環強引用

        john!.apartment = number73

        number73!.tenant = john

        john = nil

        number73 = nil

14.6 Swift中weak解決循環強引用

        class Apartment1 {

            let number:Int

            init(number:Int) {

                self.number = number

            }

            weakvar tenant: Person?

            deinit {

                print("Apartment #\(number) is being deininialized")

            }

        }

        print("--------------------->>")

        var john1:Person?

        var number74:Apartment1?

        john1 = Person.init(name:"Johu Appleseed1")

        number74 = Apartment1.init(number:74)

14.6 Swift中weak解決循環強引用

        john1!.apartment = number73

        number74!.tenant = john

        john1 = nil

        number74 = nil

14.6 Swift中weak解決循環強引用