官术网_书友最值得收藏!

Automatic Reference Counting

Reference Counting only applies to instances of classes. Structures and enumerations are value types, not reference types, and are not stored and passed by reference.

Weak references can be used to resolve strong reference cycles and can be defined as follows:

weak var aWeakProperty 

An unowned reference does not keep a strong reference hold on the instance it refers to. Unlike a weak reference, however, an unowned reference is always defined as a non-optional type. A closure capture list can be used to resolve closure strong-reference cycles.

A capture in a closure can be defined as an unowned reference when the closure and the instance that it captures will always refer to each other and be deallocated at the same time.

A capture as a weak reference can be defined when the capture's reference may become nil at some point in the future. Weak references are always of an optional type. Consider the following example:

class AClassWithLazyClosure { 
lazy var aClosure: (Int, String) -> String = {
[unowned self] (index: Int, stringToProcess: String) -> String in
// closure body goes here
return ""
}
}

Classes, objects, and reference types will be covered in detail in Chapter 10, The Best of Both Worlds - Combining FP Paradigms with OOP.

主站蜘蛛池模板: 穆棱市| 二手房| 页游| 噶尔县| 日喀则市| 广河县| 张家口市| 赫章县| 丰镇市| 靖边县| 鹰潭市| 瓦房店市| 哈密市| 赤壁市| 洛南县| 岳阳市| 盈江县| 建平县| 盐城市| 信丰县| 普宁市| 宕昌县| 且末县| 苗栗市| 黑龙江省| 黄山市| 安阳市| 文昌市| 安福县| 仪陇县| 阿克| 龙游县| 屏南县| 监利县| 江永县| 佳木斯市| 凤台县| 汉沽区| 巴彦县| 曲靖市| 通山县|