结构
GObjectWeakRef
描述 [src]
struct GWeakRef {
/* No available fields */
}
一种包含指向已废弃的 GObject
的结构。
一个 GWeakRef
可以为空(即指向 NULL
),也可以指向一个对象,只要至少有一个指向该对象的“强”引用存在。在对象的 GObjectClass
.dispose 方法调用之前,与之关联的每个 GWeakRef
将变为空(即指向 NULL
)。
与 GValue
类似,GWeakRef
可以被静态分配,堆栈或堆分配,或嵌入到更大的结构中。
与 g_object_weak_ref()
不同,g_object_add_weak_pointer()
,该弱引用是线程安全的:将弱指针转换为引用与对被销毁的对象的弱指针作废一样是原子的。
如果对象的 GObjectClass
.dispose 方法导致对对象的额外引用被持有(“再引用”),在被废弃之前获取的任何 GWeakRefs
将继续指向 NULL
。在废弃期间和再引用之后或在再引用导致废弃返回之后获取的任何 GWeakRefs
将继续指向该对象,直到它的引用计数返回到零,此时它们也将被作废。
在未首先拥有或创建对对象的强引用之前,获取一个对象在 GObjectClass
.dispose 期间的 GWeakRef
是无效的。