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

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.

主站蜘蛛池模板: 福清市| 仙桃市| 巴林左旗| 微博| 辉南县| 高邮市| 枞阳县| 商水县| 宁波市| 博野县| 交城县| 章丘市| 光泽县| 北辰区| 唐山市| 比如县| 聊城市| 雷波县| 团风县| 遵化市| 五莲县| 曲阜市| 泽普县| 安阳市| 那曲县| 诸城市| 武汉市| 乌鲁木齐县| 辛集市| 阿克| 商都县| 修水县| 和政县| 宜兰市| 江源县| 宝应县| 句容市| 乌兰察布市| 贵港市| 连平县| 岳阳市|