根据 GObject 参考文档,g_signal_connect_swapped(instance, detailed_signal, c_handler, data); 连接一个 GCallback 函数到特定对象的信号。当调用处理函数时,会交换发射信号的实例和数据。
我不太明白这是什么意思。这是否意味着 data 将指向 instance 指向的对象,并且 instance将指向指向 data 的对象,还是我理解有误?
如果前者是正确的,那么背后的逻辑是什么?
我不太明白这是什么意思。这是否意味着 data 将指向 instance 指向的对象,并且 instance将指向指向 data 的对象,还是我理解有误?
如果前者是正确的,那么背后的逻辑是什么?
self
作为第一个参数来调用来自子元素的事件处理程序,例如:g_signal_connect_swapped (self->some_internal_child, "button-press-event", (GCallback)my_mouse_handler, self)
。如果没有使用swapped
,那么在接收端会有一个丑陋的签名,第一个参数在大多数情况下可能并不重要,而且你通常可以从self->
中获取它。至少到目前为止,这就是我对它的使用方式... - underscore_d