diff options
| author | Vadim Shpakovski | 2012-09-19 01:49:24 +0300 |
|---|---|---|
| committer | Vadim Shpakovski | 2012-09-19 01:49:24 +0300 |
| commit | 08717ff81efc9e868e0af7fdb8b6807508c6b0fb (patch) | |
| tree | e825105ebcbcdaf365e38f8430c34b2e405a949a /MASShortcutView+UserDefaults.m | |
| parent | e01e9075e5f94abc1428a4799c691836599d7e5b (diff) | |
| parent | da2e1af5741cff902ee4c06408316a92695450b8 (diff) | |
| download | MASShortcut-08717ff81efc9e868e0af7fdb8b6807508c6b0fb.tar.bz2 | |
Merge remote-tracking branch 'origin/master'
Diffstat (limited to 'MASShortcutView+UserDefaults.m')
| -rw-r--r-- | MASShortcutView+UserDefaults.m | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/MASShortcutView+UserDefaults.m b/MASShortcutView+UserDefaults.m index 1b1b8e5..42a2379 100644 --- a/MASShortcutView+UserDefaults.m +++ b/MASShortcutView+UserDefaults.m @@ -25,6 +25,10 @@ void *kDefaultsObserver = &kDefaultsObserver; - (void)setAssociatedUserDefaultsKey:(NSString *)associatedUserDefaultsKey { + // First, stop observing previous shortcut view + objc_setAssociatedObject(self, kDefaultsObserver, nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + // Next, start observing current shortcut view MASShortcutDefaultsObserver *defaultsObserver = [[MASShortcutDefaultsObserver alloc] initWithShortcutView:self userDefaultsKey:associatedUserDefaultsKey]; objc_setAssociatedObject(self, kDefaultsObserver, defaultsObserver, OBJC_ASSOCIATION_RETAIN_NONATOMIC); } @@ -109,7 +113,11 @@ void *kShortcutValueObserver = &kShortcutValueObserver; if (_internalShortcutChange) return; MASShortcut *shortcut = [object valueForKey:keyPath]; _internalPreferenceChange = YES; - [[NSUserDefaults standardUserDefaults] setObject:shortcut.data forKey:_userDefaultsKey]; + + NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; + [defaults setObject:(shortcut.data ?: [NSKeyedArchiver archivedDataWithRootObject:nil]) forKey:_userDefaultsKey]; + [defaults synchronize]; + _internalPreferenceChange = NO; } else { |
