功能
GLibsteal_handle_id
不稳定 自版本:2.84 起
声明 [src]
static inline unsigned int
g_steal_handle_id (
unsigned int* handle_pointer
)
说明 [src]
将 `handle_pointer` 设为 `0`,返回之前在其位置的值。
从概念上来说,这会将句柄 ID 的所有权从引用的变量传输到宏的“调用方”(即,“窃取”句柄 ID)。
这可能非常适用于清晰传达所有权转移,或防止句柄多次被释放。例如:
void
maybe_unsubscribe_signal (ContextStruct *data)
{
if (some_complex_logic (data))
{
g_dbus_connection_signal_unsubscribe (data->connection,
g_steal_handle_id (&data->subscription_id));
// now data->subscription_id isn’t a dangling handle
}
}
虽然 `g_clear_handle_id()` 可用于很多与 `g_steal_handle_id()` 相同的情况,但这是不可使用 `g_clear_handle_id()` 的一种情况,因为没有办法将 `GDBusConnection` 传递至 `GClearHandleFunc`。
自版本 2.84 起可用
语言绑定无法直接使用此功能。