Re: Not sure what's wrong with this code to using NSUserDefaults...
Re: Not sure what's wrong with this code to using NSUserDefaults...
- Subject: Re: Not sure what's wrong with this code to using NSUserDefaults...
- From: Greg Parker <email@hidden>
- Date: Thu, 24 Jun 2010 14:46:50 -0700
On Jun 24, 2010, at 2:40 PM, Jens Alfke wrote:
> On Jun 23, 2010, at 5:11 PM, Patrick William Walker wrote:
>> NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
>>
>> [prefs setObject: @"120" forKey: @"Length"];
>>
>> [prefs synchronize];
>>
>>
>> When the program is run in the iPhone simulator (v3.2, not using 4.0 yet), it just dies. Nothing on the console log so I set a breakpoint and got a backtrace. It's pointing to the setObject: method call and it's generating an access exception. If I comment out the setObject portion, it runs fine.
>
> My only guess is that you have some other code elsewhere in the app that’s incorrectly calling -release on the shared NSUserDefaults instance, causing it to be dealloced, so the next access to that object will crash. Take a careful look at the other places in your code that use NSUserDefaults.
The other common NSUserDefaults crash is when you read an object from the prefs and then over-release that object. The result is a dangling pointer inside NSUserDefaults itself, which can crash later when you try to read or write or synchronize. (In your example, synchronize may not need to do anything when you don't call -setObject:forKey:, so it doesn't trip over the dangling pointer.)
Either way, you should try NSZombies and Guard Malloc next.
--
Greg Parker email@hidden Runtime Wrangler
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden