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

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.

主站蜘蛛池模板: 莱阳市| 贡觉县| 古田县| 南平市| 申扎县| 河西区| 三亚市| 鹤庆县| 尚义县| 蓬莱市| 汝城县| 张家界市| 余庆县| 中宁县| 马关县| 东丽区| 彰化县| 丰台区| 波密县| 古浪县| 昂仁县| 铜川市| 德格县| 田东县| 咸阳市| 方城县| 乌拉特中旗| 淮滨县| 乌拉特中旗| 互助| 隆安县| 建水县| 平和县| 襄垣县| 酒泉市| 宁阳县| 阿合奇县| 华阴市| 如东县| 洱源县| 木兰县|