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

Understanding automatic reference counting

Automatic reference counting is very easy to understand. Imagine that we have to distribute the items that we store in a box. After we distribute all the items, we must throw the box in a recycle bin. We cannot throw the box to the recycle bin when we still have one or more items in it. Seriously, we don't want to lose the items we have to distribute because they are very expensive.

The problem has a very easy solution; we just need to count the number of items that remain in the box. When the number of items in the box reaches zero, we can get rid of the box.

Tip

One or more variables can hold a reference to a single instance of a class. Thus, it is necessary to count the number of references to an instance before Swift can get rid of an instance. When the number of references to a specific instance reaches zero, Swift can automatically and safely remove the instance from memory because nobody needs this specific instance anymore.

For example, you can create an instance of a class and assign it to a variable. The automatic reference counting mechanism registers the reference and knows that there is one reference to this instance. Then, you can assign the same instance to another variable, and therefore, the automatic reference counting mechanism will increase the reference count for the single instance to two.

After the first variable runs out of scope, the second variable that holds a reference to the instance will still be accessible. The automatic reference counting mechanism will decrease the reference count for the single instance to one as a result of the first variable running out of scope. At this point, the reference count for the single instance is equal to one, and therefore, the instance must still be available—that is, we need it alive.

After the second variable runs out of scope, there are no more variables that hold a reference to the instance; therefore, the automatic reference counting mechanism will decrease the reference count for the single instance to zero and mark it as disposable. At this point, the instance can be safely removed from memory.

Tip

The automatic reference counting mechanism can remove the instance from memory at any time after the reference count for the instance reaches zero.

主站蜘蛛池模板: 丰镇市| 武胜县| 迭部县| 平顶山市| 苍山县| 潞西市| 盐亭县| 慈溪市| 比如县| 南涧| 鄂温| 兴城市| 方山县| 横山县| 阳谷县| 普兰店市| 深州市| 吉林省| 五峰| 青铜峡市| 永嘉县| 永胜县| 舟曲县| 佛教| 满城县| 寿光市| 黔西县| 嘉黎县| 视频| 兴宁市| 新化县| 隆安县| 安岳县| 杭锦旗| 金秀| 忻州市| 千阳县| 伽师县| 莫力| 汝城县| 临武县|