我在g_signal_connect调用中看到notify::前缀:
g_signal_connect(p_obj, "notify::ice-gathering-state", G_CALLBACK(on_ice_gathering_state_changed), p_obj);什么意思?此前缀是必需的吗?
发布于 2021-07-25 10:41:29
由于您可能会在其他上下文中看到此弹出窗口,因此我将尝试解释在较低级别上发生了什么:notify是信号的名称,而不是前缀。
细节信号就是所谓的“有细节的”信号,而::ice-gathering-state部分就是“细节”。对于notify signal,detail是要通知的属性的名称。如果省略详细信息,则会收到该对象上所有属性的更改通知。
您可能会看到包含详细信息的其他信号,尽管notify是目前为止最常见的。细节的含义取决于信号,您应该在该信号的文档中阅读它。
发布于 2021-07-12 15:57:39
是的,这是必需的。这不是通常的信号。它用于通知属性更改的信号。如果您检查documentation,您将看到ice-gathering-state不是一个动作信号,而是一个属性。属性通常使用g_object_get读取。但是,您可以设置一个信号处理程序,该处理程序将在每次属性更改时调用。这是通过调用以notify::<property>作为信号名称的g_signal_connect来完成的。
在GLib站点上查看this page。
https://stackoverflow.com/questions/68343847
复制相似问题