方法
GObjectObjectsteal_qdata
声明 [源]
gpointer
g_object_steal_qdata (
GObject* object,
GQuark quark
)
描述 [源]
此函数检索通过 g_object_set_qdata()
存储的用户数据指针,并从对象中删除 data
,而不会调用其 destroy()
函数(如果有)。通常,调用此函数只是为了使用 destroy 通知器来更新用户数据指针,例如
void
object_add_to_user_list (GObject *object,
const gchar *new_string)
{
// the quark, naming the object data
GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
// retrieve the old string list
GList *list = g_object_steal_qdata (object, quark_string_list);
// prepend new string
list = g_list_prepend (list, g_strdup (new_string));
// this changed 'list', so we need to set it again
g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
}
static void
free_string_list (gpointer data)
{
GList *node, *list = data;
for (node = list; node; node = node->next)
g_free (node->data);
g_list_free (list);
}
在上面的示例中,使用 g_object_get_qdata()
而不是 g_object_steal_qdata()
将会保留已设置的 destroy 函数,因此部分字符串列表将在
参数
quark
-
类型:
GQuark
一个
GQuark
,命名用户数据指针。