是否推荐使用FSGetVolumeInfo替代NSWorkspace不推荐使用的MountedLocalVolumePaths方法? [英] Is FSGetVolumeInfo the recommended alternative to NSWorkspace's deprecated mountedLocalVolumePaths method?

查看:136
本文介绍了是否推荐使用FSGetVolumeInfo替代NSWorkspace不推荐使用的MountedLocalVolumePaths方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要获取Mac OS X上已安装的本地卷的列表.以前,可可类NSWorkspace解决方案

与旧方法相比,在更合理的位置上有一个更简单的替换方法:mountedLocalVolumePaths method for getting the array of mount points for such volumes. Since Lion, this is now deprecated, with no hint in the documentation about what we should use instead.

The only other Apple-specific API I have found which provides this information is the FSGetVolumeInfo function from the CoreServices.framework. This enumerates the mounted volumes if you pass kFSInvalidVolumeRefNum for the volume parameter and 1..N for the volumeIndex. It returns the volume name (as a HFSUniStr255) via the volumeName output parameter and the mount point via the rootDirectory output parameter as a FSRef, which in turn can be converted to a URL using CFURLCreateFromFSRef().

This seems a little convoluted and unnecessarily low-level.

There are also the BSD-level functions, getfsstat() and getmntinfo() which both emit an array of statfs structs. The API seems saner than the Core Services version.

Are there any higher-level replacements I should be using instead?

解决方案

There is a much simpler replacement, in a much more logical place than the older methods: NSFileManager's mountedVolumeURLsIncludingResourceValuesForKeys:options: method.

这篇关于是否推荐使用FSGetVolumeInfo替代NSWorkspace不推荐使用的MountedLocalVolumePaths方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆