NSSearchPathDomainMask 详解

时间:2025-01-30 07:17:02

typedef NS_OPTIONS(NSUInteger, NSSearchPathDomainMask) {

    NSUserDomainMask = 1,       // user's home directory --- place to install user's personal items (~)

    NSLocalDomainMask = 2,      // local to the current machine --- place to install items available to everyone on this machine (/Library)

    NSNetworkDomainMask = 4,    // publically available location in the local area network --- place to install items available on the network (/Network)

    NSSystemDomainMask = 8,     // provided by Apple, unmodifiable (/System)

    NSAllDomainsMask = 0x0ffff  // all domains: all of the above and future items

};

在这个enum中列举了目录的domain,

NSUserDomainMask是指/user/<userid>/目录,

NSLocalDomainMask,官方文档说是Local to the current machine—the place to install items available to everyone on this machine.还是不太好理解,应该就是跟NSUserDomainMask相对的一个概念,NSUserDomainMask是针对当前用户的,而NSLocalDomainMask是针对所有用户的,比如Library目录,如果是针对用户的,就是/user/<userid>/Library,而对所有用户的就是/Library。

NSNetworkDomainMaskt是指/Network目录下的文件夹。

NSSystemDomainMask是系统目录,现在的Mac在/System目录下只有一个Library目录,这个目录下包含了系统运行的程序和文件。并且所有的SystemDomain的文件夹都是只读的。

其实这个enum定义的是domain的概念,不能简单的理解为某个文件夹下的文件,比如NSSystemDomainMask中的Application目录是/Applications,Document目录是/System/Library/Documentation,其实这就没什么意义,因为这个文件夹根本不存在。