g_signal_connect
Swift无法调用C宏, 需要使用g_signal_connect_data
函数
1 | let slot: @convention(c) (UnsafeMutableRawPointer?) -> Void = { data in |
slot必须标记为@convention(c)
, 否则unsafeBitCast
将产生fatalError
g_object_get_property
1 | func gproperty<T, R>(of ptr: UnsafeMutablePointer<T>, name: String, transform: (UnsafeMutablePointer<GValue>) -> R) -> R { |
再使用g_value_get族函数从GValue中获取值
1 | let property = gproperty(of: ptr, name: "property") { g_value_get_variant($0) } |