方法
GioInitableinit
自2.22版本起
声明 [src]
gboolean
g_initable_init (
GInitable* initable,
GCancellable* cancellable,
GError** error
)
描述 [src]
初始化实现该接口的对象。
此方法旨在用于语言绑定。如果在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
。constructor。在这个模式中,调用者期望能够在 g_object_new() 的结果上调用 g_initable_init()
,无论它实际上是否是一个新实例。
自2.22版本起可用
参数
cancellable
-
类型:
GCancellable
可选的
GCancellable
对象,NULL
表示忽略。该参数可以为 NULL
。数据由方法调用者所有。 error
-
类型:
GError **
用于恢复错误的位置。
该参数可以为 NULL
。如果返回位置不是 NULL
,则必须将其初始化为NULL
GError*
。如果没有错误,方法将留下初始化的参数为 NULL
。如果出现错误,则参数将设置为新分配的 GError
;调用者将负责对该数据进行所有权的获取并释放它。