RefBase, sp和wp (3)

    RefBase提供了一个函数: extendObjectLifetime(int32_t mode); 用于在构造函数中设置mFlags的值.

    以及定义了一个枚举:

    enum {

        OBJECT_LIFETIME_WEAK = 0x0001;              // 二进制为B01

        OBJECT_LIFETIME_FOREVER = 0x0003;          // 二进制为B11, 即FOREVER包含了WEAK的情况。

    };

1. 当mFlags为0时,强引用计数控制实际对象生命周期,弱引用计数控制影子对象生命周期。

2. 当mFlags为OBJECT_LIFETIME_WEAK时,当强引用计数为0, 弱引用计数不为0时,实际对象不会被delete 。当强引用计数和弱引用计数同时为0时,实际对象和影子对象才会被delete 。

3. 当mFlags为OBJECT_LIFETIME_FOREVER时, 对象将会一直存在,不受强弱引用计数的控制,需要在适当的时候进行删除。

posted on 2015-03-14 14:17  Jackwen  阅读(230)  评论(0编辑  收藏  举报