当你需要在 Java 中初始化一个静态变量时,你可以这样做:
public class MyClass {
private static Object someStaticObject;
static {
// initialize someStaticObject here
}
...
你怎么能在 Cocoa 中做同样的事情?
具体来说,这就是我所追求的:我有一个具有大量用户偏好的应用程序。我想从一个所有方法都是静态的类中管理所有这些首选项,如下所示:
@implementation Preferences
+(void)setMotion:(BOOL)isMotion {
[[NSUserDefaults standardUserDefaults] setBool:isMotion forKey:keyIsMotion];
[[NSUserDefaults standardUserDefaults] synchronize];
}
+(BOOL)isMotion {
[[NSUserDefaults standardUserDefaults] boolForKey:keyIsMotion];
}
这样我就可以在我的代码中的任何地方轻松访问和设置我的偏好:
[Preferences setMotion:TRUE];
或者
if ([Preferences isMotion]) {
...
鉴于我计划有数十个静态方法,它希望有一个静态变量默认值定义如下:
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
这样我上面的代码就可以变成:
+(void)setMotion:(BOOL)isMotion {
[defaults setBool:isMotion forKey:keyIsMotion];
[defaults synchronize];
}
+(BOOL)isMotion {
[defaults boolForKey:keyIsMotion];
}
但是,我不确定如何做到这一点。