[Swift]Day14:自动引用计数

自动引用计数

先陪妹子看电影,贴点代码占个坑。

弱引用

可以在前面加上 weak 表明这是一个弱引用。弱引用不会保持住引用的实例,并且不会阻止 ARC 销毁被引用的实例。

可以看下下面这个例子中如何通过弱引用避免循环引用的问题:

class Person {
    let name: String
    var apartment: Apartment?

    init(name: String) {
        self.name = name
    }
    deinit {
        println("\(name) is being deinitialized")
    }
}

class Apartment {
    let number: Int
    weak var tenant: Person?

    init(number: Int) {
        self.number = number
    }
    deinit {
        println("Apartment #\(number) is being deinitialized")
    }
}
var why: Person?
var number604: Apartment?

why = Person(name: "WHY")
number604 = Apartment(number: 604)

why!.apartment = number604
number604!.tenant = why
println("nil 1")
why = nil
println("nil 2")
number604 = nil

无主引用

可以在前面加上 unowned 表明这是一个无主引用。和弱引用类似,无主引用不会牢牢保持住引用的实例。和弱引用不同的是,无主引用是永远有值的。因此,无主引用总是被定义为非可选类型。

下面这个例子:

class Customer {
    let name: String
    var card: CreditCard?

    init(name: String) {
        self.name = name
    }
    deinit {
        println("\(name) is being deinitialized")
    }
}

class CreditCard {
    let number: Int
    unowned let customer: Customer

    init(number: Int, customer: Customer) {
        self.number = number
        self.customer = customer
    }
    deinit {
        println("Card #\(number) is being deinitialized")
    }
}
var john: Customer?
john = Customer(name: "WHY")
john!.card = CreditCard(number: 1234_5678_9012_3456, customer: john!)
john = nil

References

时间: 2024-10-10 09:55:23

[Swift]Day14:自动引用计数的相关文章

swift:自动引用计数ARC

Swift自动引用计数:ARC Swift使用自动引用计数(ARC)来跟踪并管理应用使用的内存.大部分情况下,这意味着在Swift语言中,内存管理"仍然工作",不需要自己去考虑内存管理的事情.当实例不再被使用时,ARC会自动释放这些类的实例所占用的内存. 然而,在少数情况下,为了自动的管理内存空间,ARC需要了解关于你的代码片段之间关系的更多信息.本章描述了这些情况,并向大家展示如何打开ARC来管理应用的所有内存空间. 注意:引用计数只应用在类的实例.结构体(Structure)和枚举

Swift的自动引用计数

前言 在iOS5之后apple推出了相对于MRC(Mannul Reference Counting)的ARC(Automatic Reference Counting)的内存管理机制,前者是对内存的手动管理,后者是系统对内存的智能化管理.其实我学习iOS的时候已经推出到iOS7了,对于MRC机制我甚至连一知半解都算不上.有时候和iOS老司机交流的时候他们对于各种内存都很熟悉,感觉包括我在内的很多最近两年刚学习iOS开发的同学,都属于填鸭式的学习吧,知其然不知其所以然,甚至都没耐心去读优秀的源码

Swift中文教程(十六) 自动引用计数

Swift使用自动引用计数(ARC)来管理应用程序的内存使用.这表示内存管理已经是Swift的一部分,在大多数情况下,你并不需要考虑内存的管理.当实例并不再被需要时,ARC会自动释放这些实例所使用的内存. 但是,少数情况下,你必须提供部分代码的额外信息给ARC,这样它才能够帮你管理这部分内存.本章阐述了这些情况并且展示如何使用ARC来管理应用程序的内存. 注意引用计数仅仅作用于类实例上.结构和枚举是值类型,而非引用类型,所以不能被引用存储和传递. 1.ARC怎样工作每当你创建一个类的实例,ARC

swift学习笔记(七)自动引用计数

与Object-c一样,swift使用自动引用计数来跟踪并管理应用使用的内存.当实例不再被使用时,及retainCount=0时,会自动释放是理所占用的内存空间. 注:引用计数仅适用于类的实例,因为struct和enumeration属于值类型,也就不牵涉引用,所以其存储和管理方式并不是引用计数. 当一个实例被初始化时,系统会自动分配一定的内存空间,用于管理属性和方法.当实例对象不再被使用时,其内存空间被收回. swift中的引用类型分为三种,即Strong强引用,weak弱引用和无主引用unw

Swift 自动引用计数机制ARC

Swift 使用自动引用计数(ARC)这一机制来跟踪和管理你的应用程序的内存.通常情况下,Swift 的内存管理机制会一直起着作用,你无须自己来考虑内存的管理.ARC 会在类的实例不再被使用时,自动释放其占用的内存. 然而,在少数情况下,ARC 为了能帮助你管理内存,需要更多的关于你的代码之间关系的信息.本章描述了这些情况,并且为你示范怎样启用 ARC 来管理你的应用程序的内存. 注意: 引用计数仅仅应用于类的实例.结构体和枚举类型是值类型,不是引用类型,也不是通过引用的方式存储和传递. 自动引

IOS开发语言Swift入门连载---自动引用计数

IOS开发语言Swift入门连载-自动引用计数 Swift使用自动引用计数(ARC)这一机制来跟踪和管理你的应用程序的内存.通常情况下,Swift 的内存管理机制会一直起着作用,你无须自己来考虑内存的管理.ARC 会在类的实例不再被使用时,自动释放其占用的内存. 然而,在少数情况下,ARC 为了能帮助你管理内存,需要更多的关于你的代码之间关系的信息.本章描述了这些情况,并且为你示范怎样启用 ARC 来管理你的应用程序的内存. 注意 引用计数仅仅应用于类的实例.结构体和枚举类型是值类型,不是引用类

进击的雨燕--------------自动引用计数

Swift 使用自动引用计数(ARC)机制来跟踪和管理你的应用程序的内存.通常情况下,Swift 内存管理机制会一直起作用,你无须自己来考虑内存的管理.ARC 会在类的实例不再被使用时,自动释放其占用的内存. 然而,在少数情况下,ARC 为了能帮助你管理内存,需要更多的关于你的代码之间关系的信息.本章描述了这些情况,并且为你示范怎样启用 ARC 来管理你的应用程序的内存. 注意:引用计数仅仅应用于类的实例.结构体和枚举类型是值类型,不是引用类型,也不是通过引用的方式存储和传递. 自动引用计数的工

自动引用计数

http://numbbbbb.gitbooks.io/-the-swift-programming-language-/content/chapter2/16_Automatic_Reference_Counting.html 本页包含内容: 自动引用计数的工作机制 自动引用计数实践 类实例之间的循环强引用 解决实例之间的循环强引用 闭包引起的循环强引用 解决闭包引起的循环强引用 Swift 使用自动引用计数(ARC)这一机制来跟踪和管理你的应用程序的内存.通常情况下,Swift 的内存管理机

Swift2.1 语法指南——自动引用计数

原档: https://developer.apple.com/library/prerelease/ios/documentation/Swift/Conceptual/Swift_Programming_Language/AutomaticReferenceCounting.html#//apple_ref/doc/uid/TP40014097-CH20-ID48 参考:http://wiki.jikexueyuan.com/project/swift/chapter2/16_Automat