结构

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 是无效的。

实例方法

g_weak_ref_clear

释放与非静态分配的 GWeakRef 关联的资源。此调用之后,GWeakRef 将处于未定义状态。

自:2.32

g_weak_ref_get

如果 weak_ref 不为空,则原子获取指向的对象的强引用,并返回该引用。

自:2.32

g_weak_ref_init

初始化非静态分配的 GWeakRef

自:2.32

g_weak_ref_set

更改 weak_ref 指向的对象,或将其设置为 NULL

自:2.32