I have made a category for saving number of app runs like so,
static NSString * const AppRuns = @"IP_AppRuns";
@implementation NSUserDefaults (RegisteredUser)
+ (void)saveRuns:(NSNumber *)value
{
[[NSUserDefaults standardUserDefaults] setObject:value forKey:AppRuns];
}
+ (NSNumber *)runs
{
return [[NSUserDefaults standardUserDefaults] objectForKey:AppRuns];
}
....
And I'm setting it in my App delegate didFinishLaunchingWithOptions
method.
[NSUserDefaults saveRuns: @(21)];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"App has run %ld times", [[NSUserDefaults runs] integerValue]);
But, I get EXC_BAD_ACCESS, which makes me suspect that it isn't getting saved.
However, the following works:
[[NSUserDefaults standardUserDefaults] setObject:@(17) forKey:@"AppRuns"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"App has run %ld times", [[[NSUserDefaults standardUserDefaults] valueForKey:@"AppRuns"] integerValue]);
What am I doing wrong?