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时, 对象将会一直存在,不受强弱引用计数的控制,需要在适当的时候进行删除。
时间: 2024-10-13 04:07:54