我这样做的方法可能是从用户默认值中读取值。
NSString * const MDAppleMiniaturizeOnDoubleClickKey = @"AppleMiniaturizeOnDoubleClick";
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
// [userDefaults addSuiteNamed:NSGlobalDomain]; // unnecessary
NSNumber *miniaturize = [userDefaults
objectForKey:MDAppleMiniaturizeOnDoubleClickKey];
NSLog(@"AppleMiniaturizeOnDoubleClick == %@",
([miniaturize boolValue] ? @"YES" : @"NO"));
(此首选项设置存储在不可见的.GlobalPreferences.plist
在您的〜/ Library / Preferences /文件夹中)。
请注意,默认情况下,“双击最小化”选项处于关闭状态,因此如果您检查是否存在AppleMiniaturizeOnDoubleClick
它返回 nil,这意味着它已关闭。 (用户默认值仅在与默认值不同时才开始存储值)。
该键在 Leopard 中与在 Snow Leopard 中是相同的。 (在《狮子》或《山狮》中也没有改变)。
当然,还有一个秘密(私有)方法NSWindow
, -(BOOL)_shouldMiniaturizeOnDoubleClick
,但我不建议使用私有方法。
[更新] 关于 Catfish_Man 的评论:您是正确的,因为该行[userDefaults addSuiteNamed:NSGlobalDomain];
是不必要的,因为 NSUserDefaults 已经能够读取全局首选项。 (我修改了上面的代码以反映这一点)。
“此外,NSGlobalDomain
没有翻译成
该方法的.GlobalPreferences.plist。”
我不确定我是否跟随你到那里。 NSUserDefaults 建立在 CFPreferences 之上,它定义了以下 6 个常量:
应用:
kCFPreferencesAnyApplication,
kCFPreferencesCurrentApplication
Host:
kCFPreferencesAnyHost,
kCFPreferencesCurrentHost
User:
kCFPreferencesAnyUser,
kCFPreferencesCurrentUser
假设有一个虚构的应用程序包标识符“com.markdouma.App”和一个主机(基于您当前的网络位置,在此示例中不会更改),则磁盘上通常有 8 个位置可以存储首选项信息。 (注意:显示的路径仅用于演示目的;确切的文件路径位置可能会发生变化)。 8 个不同的位置由 CFPreferences 常量的不同组合产生:
/库/首选项/.GlobalPreferences.plist
(kCFPreferencesAnyApplication, kCFPreferencesAnyUser, kCFPreferencesAnyHost)
/Library/Preferences/com.markdouma.App.plist
(kCFPreferencesCurrentApplication, kCFPreferencesAnyUser,
kCFPreferencesAnyHost)
/Library/Preferences/ByHost/.GlobalPreferences.UNIQUE_HOST_IDENTIFIER.plist(kCFPreferencesAnyApplication, kCFPreferencesAnyUser, kCFPreferencesCurrentHost)
/Library/Preferences/ByHost/com.markdouma.App.UNIQUE_HOST_IDENTIFIER.plist(kCFPreferencesCurrentApplication,
kCFPreferencesAnyUser, kCFPreferencesCurrentHost)
〜/库/首选项/.GlobalPreferences.plist
(kCFPreferencesAnyApplication, kCFPreferencesCurrentUser,
kCFPreferencesAnyHost)
〜/ Library / Preferences / com.markdouma.App.plist