虚拟方法

GioInitableinit

自从:2.22

声明 [源]

gboolean
init (
  GInitable* initable,
  GCancellable* cancellable,
  GError** error
)

描述 [源]

初始化实现接口的对象。

此方法旨在用于语言绑定。如果用C编写,则通常应使用 g_initable_new()

对象必须在初建之后经过任何实际使用之前进行初始化,无论是使用此函数还是 g_async_initable_init_async()。

实现可能还支持取消。如果 cancellable 不是 NULL,则可以从另一个线程通过触发可取消对象来取消初始化。如果操作已取消,则将返回错误 G_IO_ERROR_CANCELLED。如果 cancellable 不是 NULL,并且对象不支持可取消初始化,则将返回错误 G_IO_ERROR_NOT_SUPPORTED

如果对象未初始化或初始化返回错误,则除 g_object_ref()g_object_unref() 之外的所有对象操作都视为无效,其行为未定义。有关更多详情,请参阅 [简介][ginitable]。

调用者不应假定实现 GInitable 的类可以初始化多次,除非该类明确文档说明支持此功能。通常,类对 init() 的实现可以假设(并断言)它只将被调用一次。以前,此文档建议所有 GInitable 实现应该是幂等的;在 GLib 2.54 中放宽了此建议。

如果一个类明确支持多次初始化,则建议该方法应该是幂等的:具有相同参数的多个调用应该返回相同的结果。只有第一个调用初始化对象;后续调用返回第一次调用的结果。

一个类可能需要支持幂等初始化的一个原因是在其设计为通过单例模式使用时,或使用一个有时会返回现有实例的 GObjectClass 构造函数。在这个模式中,调用者可以期望将在 g_object_new() 的结果上调用 g_initable_init(),不管它实际上是一个新实例。

自:2.22

参数

cancellable

类型: GCancellable

可选的 GCancellable 对象,NULL 表示忽略。

此参数可以 NULL
数据由方法的调用者拥有。
error

类型: GError **

可恢复错误的返回位置。

此参数可以 NULL
如果返回位置不是 NULL,则必须将其初始化为一个 NULL GError*
如果虚拟函数没有错误,则将保留初始化参数为 NULL
在发生错误的情况下,参数将被设置为一个新分配的 GError;调用者将接管数据,并负责释放它。

返回值

类型: gboolean

TRUE 表示成功。如果发生错误,此函数将返回 FALSE,并且如果存在,将适当地设置 error