方法

GLibVariantref_sink

since: 2.24

声明 [src]

GVariant*
g_variant_ref_sink (
  GVariant* value
)

描述 [src]

GVariant 使用了浮动的引用计数系统。所有以 g_variant_new_ 开头名称的函数都返回浮动引用。

对具有浮动引用的 GVariant 调用 g_variant_ref_sink() 将将浮动引用转换为完整引用。对非浮动 GVariant 调用 g_variant_ref_sink() 将导致添加一个正常引用。

换句话说,如果 value 是浮动的,则此次调用“假定拥有”浮动引用,将其转换为正常引用。如果 value 不是浮动的,则此次调用将添加一个新的正常引用,并将引用计数增加一个。

所有导致 GVariant 实例被插入容器的调用都会在实例上调用 g_variant_ref_sink()。这意味着如果值刚刚被创建(并且只有它的浮动引用),则容器将在此时单独拥有该值,调用者不需要取消引用它。这使得某些常见的编程样式变得更简单,同时仍然在值不浮动的情况下保持正常的引用计数语义。

自 2.24 版本以来可用。

返回值

类型: GVariant

相同的 value

方法调用者负责获取返回数据的所有权,并进行释放。