我正在开发一款应用程序,当可移动存储设备被卸载或从USB上强制拔出时,该应用程序应检测到发生的事件。如何接收这些事件?
我第一次看到NSWorkspace可以平滑地卸载设备,但是这个类有像-unmountAndEjectDeviceAtPath:这样的方法来卸载设备。谁能给我介绍一些检测未挂载卷的示例代码?
发布于 2009-09-11 10:30:45
来自HardwareGrowler的一小段代码:
NSWorkspace *workspace = [NSWorkspace sharedWorkspace];
NSNotificationCenter *center = [workspace notificationCenter];
[center addObserver:[VolumeNotifier class] selector:@selector(volumeDidMount:) name:NSWorkspaceDidMountNotification object:nil];
[center addObserver:[VolumeNotifier class] selector:@selector(volumeDidUnmount:) name:NSWorkspaceDidUnmountNotification object:nil];
[center addObserver:[VolumeNotifier class] selector:@selector(volumeWillUnmount:) name:NSWorkspaceWillUnmountNotification object:nil];然后,您需要实现对通知做出反应的方法
+ (void) volumeDidUnmount:(NSNotification *)aNotification;
{
...
}对于整个实现,请查看源包中的http://growl.info/source.php,转到Extras/HardwareGrowler,然后在那里查看VolumeNotifier.h/m
更新:
彼得斯的回答比这更好。如果你遇到这个问题,请考虑使用磁盘仲裁框架。
发布于 2009-09-11 03:29:52
在the Disk Arbitration framework中使用the DARegisterDiskDisappearedCallback function。
https://stackoverflow.com/questions/1408216
复制相似问题