diff options
| author | Vadim Shpakovski | 2013-04-15 23:24:46 +0300 |
|---|---|---|
| committer | Vadim Shpakovski | 2013-04-15 23:24:46 +0300 |
| commit | 8ede00468722a62b9bf7809a3c9e3f3aeefcdf49 (patch) | |
| tree | 9d1989f885835ad4d5aa82a3d2b7c3bacb4daa01 | |
| parent | fe33039c18b08b2dc37149589a057da76ffc08f1 (diff) | |
| download | MASShortcut-8ede00468722a62b9bf7809a3c9e3f3aeefcdf49.tar.bz2 | |
Fixing a problem with user defaults.
| -rw-r--r-- | MASShortcut+UserDefaults.m | 23 |
1 files changed, 18 insertions, 5 deletions
diff --git a/MASShortcut+UserDefaults.m b/MASShortcut+UserDefaults.m index ed1531c..cf9615e 100644 --- a/MASShortcut+UserDefaults.m +++ b/MASShortcut+UserDefaults.m @@ -50,7 +50,9 @@ #pragma mark - -@implementation MASShortcutUserDefaultsHotKey +@implementation MASShortcutUserDefaultsHotKey { + NSString *_observableKeyPath; +} @synthesize monitor = _monitor; @synthesize handler = _handler; @@ -58,27 +60,38 @@ #pragma mark - +void *MASShortcutUserDefaultsContext = &MASShortcutUserDefaultsContext; + - (id)initWithUserDefaultsKey:(NSString *)userDefaultsKey handler:(void (^)())handler { self = [super init]; if (self) { _userDefaultsKey = userDefaultsKey.copy; _handler = [handler copy]; - [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(userDefaultsDidChange:) - name:NSUserDefaultsDidChangeNotification object:[NSUserDefaults standardUserDefaults]]; - [self installHotKeyFromUserDefaults]; + _observableKeyPath = [@"values." stringByAppendingString:_userDefaultsKey]; + [[NSUserDefaultsController sharedUserDefaultsController] addObserver:self forKeyPath:_observableKeyPath options:NSKeyValueObservingOptionInitial context:MASShortcutUserDefaultsContext]; } return self; } - (void)dealloc { - [[NSNotificationCenter defaultCenter] removeObserver:self name:NSUserDefaultsDidChangeNotification object:[NSUserDefaults standardUserDefaults]]; + [[NSUserDefaultsController sharedUserDefaultsController] removeObserver:self forKeyPath:_observableKeyPath context:MASShortcutUserDefaultsContext]; [MASShortcut removeGlobalHotkeyMonitor:self.monitor]; } #pragma mark - +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context +{ + if (context == MASShortcutUserDefaultsContext) { + [self installHotKeyFromUserDefaults]; + } + else { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } +} + - (void)userDefaultsDidChange:(NSNotification *)note { [MASShortcut removeGlobalHotkeyMonitor:self.monitor]; |
