值类型没有须求管住

}

//1.弱援引, 引用计数不变;

        print(“Person2 deinit”)

    }

    deinit {

class Person4 {

unowned var weakP3:Person3 = Person3(name: “hjq”)

var p5:Person5? = Person5(name: “XiaoHange”)

    init(name:String) {

    var card:CreaditCard? //人不断定有信用卡

}else{

        print(“\(self.number) deinit”)

        self.number = number

    init(name:String) {

}

        print(“Person deinit”)

a4 = nil

}

 

    var name:String

    }

 1.运用unowned修饰的变量, 对象释放后不会安装为nil, 不安全;

    print(p)

    deinit {

 */

    let number:Int

    deinit {

 

    init(name:String) {

        self.person = person

//例1:

 

        print(“\(self.name) deinit”)

//例2:

}

 ARC不是万能的, 它能够很好的消除内部存储器难题,
不过在某个场馆无法很好的化解内部存款和储蓄器败露难题;

// 四个指标没有被灭绝, 可是大家没法访问他们了, 那就应际而生了内部存款和储蓄器败露!

    }

 1.管理援用类型的内存, 不会管理值类型, 值类型无需管住;

}

class Person {

 哪一天使用weak?

        self.name = name

var p:Person? = Person(name: “xiaohange”)

    //银行卡必须有所属用户;

    var name:String

 循环引用:

 */

    print(weakP as Any)

    let name:String

class Person5 {

        self.name = name

    }

        self.name = name

 3.假使成功该法规: ARC 自动回收内部存款和储蓄器

class CreaditCard {

 

 

        print(“Person3 deinit”)

//p = nil

var a4:Apartment? = Apartment(number: 888)

p4 = nil

 

 

 2.行使unowned修饰的变量, 不是可选类型; 利用weak修饰的变量, 是可选类型;

 

var strongP = Person2(name: “hjq”) //1

//2.假使应用weak修饰变量, 当对象释放后会自动将变量设置为nil;

 

var p4:Person4? = Person4(name: “han”)

}

 

if let p = weakP{

/** weak弱引用 **/

 

    let name:String

 

}

var strongP2 = strongP //2

 举例: 四个恐怕多少个目的之间的轮回引用难点

 2.内部存款和储蓄器管理原则: 当没任何强援引指向对象,
系统会活动销毁对象(私下认可情状下有所的援用都是强引用);

    }

 

    }

/*

 

    deinit {

/*

 

    let number:Int      //房间号

cc = nil

var cc:CreaditCard? = CreaditCard(number: 18888, person: p5!)

 

    init(number:Int) {

 unowned无主引用, 也正是OC unsafe_unretained

        print(“\(self.number) deinit”)

class Person3 {

        self.number = number

class Person2 {

    deinit {

        self.name = name

//3.所以利用weak修饰的变量必定是贰个可选类型,
因为只有可选类型本事安装为nil.

澳门永利平台,    init(name:String) {

p5 = nil

 几时使用unowned?

weak var weakP:Person2? = Person2(name: “hjq”)

    //当某二个变量或常量必须有值, 一直有值, 那么能够使用unowned修饰

   利用weak修饰的变量, 对象释放后会设置为nil;

//强援用, 援引计数+1

/*

 Swift内部存款和储蓄器管理:

    var name:String

    deinit {

    deinit {

p4!.apartment = a4 //人有一套公寓

    init(name:String) {

a4!.tenant = p4!   //公寓中住着一个人

    }

 */

class Apartment {

    weak var apartment: Apartment? //公寓

    }

    }

    }

    unowned let person:Person5

 unowned和weak的区别:

    var tenant:Person4? //租客

}

    }

    init(number:Int, person:Person5) {

    }

 

        self.name = name

    }

    }

        print(“\(self.name) deinit”)