Changeset 5126

Show
Ignore:
Timestamp:
12/13/07 16:47:21 (7 months ago)
Author:
morris
Message:

Don't sync default values automatically to defaults, only pick them up when accessing if there's no value in defaults

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredAdditions/trunk/WISettings.h

    r5011 r5126  
    3030        NSString                                                *_identifier; 
    3131        id                                                              _defaults; 
     32        NSDictionary                                    *_defaultValues; 
    3233} 
    3334 
  • WiredAdditions/trunk/WISettings.m

    r5011 r5126  
    3030#import <WiredAdditions/WISettings.h> 
    3131 
    32 static id                       _WISettingsSharedSettings; 
    33  
     32static WISettings                       *WISettingsSharedSettings; 
    3433 
    3534@interface WISettings(Private) 
    3635 
    37 + (id)_settings; 
    38 + (id)_settingsWithIdentifier:(NSString *)identifier; 
     36+ (WISettings *)_settings; 
    3937- (id)_initWithIdentifier:(NSString *)identifier; 
    4038 
     
    4947@implementation WISettings(Private) 
    5048 
    51 + (id)_settings { 
    52         return [self _settingsWithIdentifier:NULL]; 
    53 
    54  
    55  
    56  
    57 + (id)_settingsWithIdentifier:(NSString *)identifier { 
    58         if(!_WISettingsSharedSettings) 
    59                 [self loadWithIdentifier:identifier]; 
    60          
    61         return _WISettingsSharedSettings; 
     49+ (WISettings *)_settings { 
     50        if(!WISettingsSharedSettings) 
     51                [self loadWithIdentifier:NULL]; 
     52         
     53        return WISettingsSharedSettings; 
    6254} 
    6355 
     
    6557 
    6658- (id)_initWithIdentifier:(NSString *)identifier { 
    67         NSDictionary    *defaultValues; 
    68         NSString                *key; 
    69         NSEnumerator    *enumerator; 
    70         BOOL                    synchronize = NO; 
    71         id                              object; 
    72  
    7359        self = [super init]; 
    7460 
     
    8066                        _defaults = [[NSMutableDictionary alloc] init]; 
    8167        } else { 
    82                 _defaults      = [NSUserDefaults standardUserDefaults]; 
     68                _defaults = [NSUserDefaults standardUserDefaults]; 
    8369        } 
    8470         
    85         defaultValues   = [[self class] defaults]; 
    86         enumerator              = [[defaultValues allKeys] objectEnumerator]; 
    87  
    88         while((key = [enumerator nextObject])) { 
    89                 object = [_defaults objectForKey:key]; 
    90  
    91                 if(!object) { 
    92                         object = [defaultValues objectForKey:key]; 
    93                          
    94                         [_defaults setObject:object forKey:key]; 
    95                          
    96                         synchronize = YES; 
    97                 } 
    98         } 
    99          
    100         if(synchronize) 
    101                 [self _synchronize]; 
     71        _defaultValues = [[[self class] defaults] retain]; 
    10272 
    10373        return self; 
     
    11787 
    11888- (id)_objectForKey:(id)key { 
    119         return [_defaults objectForKey:key]; 
     89        id              object; 
     90         
     91        object = [_defaults objectForKey:key]; 
     92 
     93        if(object) 
     94                return object; 
     95         
     96        return [_defaultValues objectForKey:key]; 
    12097} 
    12198 
     
    144121 
    145122+ (void)loadWithIdentifier:(NSString *)identifier { 
    146         if(!_WISettingsSharedSettings) 
    147                 _WISettingsSharedSettings = [[self alloc] _initWithIdentifier:identifier]; 
     123        if(!WISettingsSharedSettings) 
     124                WISettingsSharedSettings = [[self alloc] _initWithIdentifier:identifier]; 
    148125} 
    149126