Когда вам нужно инициализировать статическую переменную в Java, вы можете сделать что-то вроде этого:
public class MyClass {
private static Object someStaticObject;
static {
// initialize someStaticObject here
}
...
Как вы можете сделать то же самое в какао?
В частности, вот что мне нужно: у меня есть приложение с большим количеством пользовательских настроек. Я хотел бы управлять всеми этими предпочтениями из одного класса, где все методы являются статическими, следующим образом:
@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];
}
Однако я не уверен, как этого добиться.