方法

GObjectObjectnotify_by_pspec

自:2.26

声明 [源]

void
g_object_notify_by_pspec (
  GObject* object,
  GParamSpec* pspec
)

描述 [源]

object 中指定由 pspec 定义的属性发出“notify”信号。

此函数省略了属性名查找,因此比 g_object_notify() 更快。

避免在注册属性的类中使用 g_object_notify() 并使用 g_object_notify_by_pspec(),一种方法是将使用 g_object_class_install_property() 的 GParamSpec 存储在一个静态数组中,例如:

  typedef enum
  {
    PROP_FOO = 1,
    PROP_LAST
  } MyObjectProperty;

  static GParamSpec *properties[PROP_LAST];

  static void
  my_object_class_init (MyObjectClass *klass)
  {
    properties[PROP_FOO] = g_param_spec_int ("foo", NULL, NULL,
                                             0, 100,
                                             50,
                                             G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS);
    g_object_class_install_property (gobject_class,
                                     PROP_FOO,
                                     properties[PROP_FOO]);
  }

然后使用以下方式通知“foo”属性的变化:

  g_object_notify_by_pspec (self, properties[PROP_FOO]);

自:2.26

参数

pspec

类型: GParamSpec

object 类中安装的属性的 GParamSpec

此数据由方法的调用者持有。