我将实现一个观察者,以便在特定卷消失时得到通知。
中的通知NSWorkspace
不是一个选项,因为我需要有关设备关闭而不是设备卸载的通知。
注册很容易(我省略了错误处理)
var callbackSession : DASession?
let callbackSession = DASessionCreate(kCFAllocatorDefault)
DASessionSetDispatchQueue(callbackSession!, DispatchQueue.global())
DARegisterDiskDisappearedCallback(callbackSession!, nil, volumeDidDisappearCallback, nil)
回调闭包是
let volumeDidDisappearCallback : DADiskDisappearedCallback = { (disk, context) in
// do something with disk
}
注销方法
func DAUnregisterCallback(_ session: DASession, _ callback: UnsafeMutableRawPointer, _ context: UnsafeMutableRawPointer?)
需要一个泛型UnsafeMutableRawPointer
而不是特定的回调类型之一。
当我将回调闭包传递给callback
我得到的参数时
无法将类型“DADiskDisappearedCallback”(又名“@convention(c)(DADisk,可选)-> ()”)的值转换为预期的参数类型“UnsafeMutableRawPointer”
我的问题是:如何将回调对象转换volumeDidDisappearCallback
为UnsafeMutableRawPointer
?