我需要对 glib 信号参数执行 g_object_unref() 吗?
Posted
技术标签:
【中文标题】我需要对 glib 信号参数执行 g_object_unref() 吗?【英文标题】:Do i need to do g_object_unref() on glib signal parameters? 【发布时间】:2015-12-10 15:21:21 【问题描述】:当我将信号连接到回调函数时,回调函数会获取传递的参数。 reference counter
是在对象传递给我的回调函数之前增加还是我必须自己增加它。
我想这必须有某种约定,因为gtk
或libgobject
的文档中没有提到类似的内容。
【问题讨论】:
对象的所有者是谁?你能添加一个例子吗?我从来没有默认添加引用,这取决于... 【参考方案1】:通常,当对象传递给回调时,您不会假定对对象的引用。仅当对象是带有“transfer full”注释的方法的返回值时,您才假定引用。您可以在文档中看到这些注释。
(我说“一般”是因为总有一些构建不良的库,其 API 违反了这些准则。不过,您对此无能为力。)
【讨论】:
以上是关于我需要对 glib 信号参数执行 g_object_unref() 吗?的主要内容,如果未能解决你的问题,请参考以下文章