Re: singleton design pattern
Re: singleton design pattern
- Subject: Re: singleton design pattern
- From: Alejandro Marcos Aragón <email@hidden>
- Date: Wed, 19 May 2010 11:28:57 -0500
I found the problem. It was not in the singleton design pattern, but in the way I created the NSMutableDictionary. The dictionary contained NSString as keys and NSMutableArrays as values, then I was trying to create the NSMutableDictionary with initWithDictionary method from an NSDictionary. But an NSDictionary is not mutable, so it was giving me that error when trying to change something in the NSMutableDictionary.
From the code that I posted, it was not clear where the problem was, so I apologize. The code I removed seemed irrelevant.
Thank you all,
aa
On May 18, 2010, at 5:42 PM, Mike Abdullah wrote:
>
> On 18 May 2010, at 23:28, Alejandro Marcos Aragón wrote:
>
>> Hi all,
>>
>> I've been staring at this piece of code now to try to find out what's wrong with it and I can't think of anything at this point. I'm trying to have a single instance of an NSMutableDictionary inside a class:
>>
>>
>>
>> // in .h file
>> @interface ClassA : NSObject {
>>
>> }
>>
>> + (NSMutableDictionary*) uniqueInstance;
>>
>> @end
>>
>> // in .m file
>> @implementation ClassA
>>
>>
>> + (NSMutableDictionary*) uniqueInstance {
>>
>> static NSMutableDictionary* uniqueInstance = nil;
> you don't actually need '= nil' unless you prefer it.
>
>>
>> if (uniqueInstance == nil) {
>>
>> // directory to save files
>> NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
>> NSString *dir = [paths objectAtIndex:0];
>>
>> NSFileManager *fileManager = [NSFileManager defaultManager];
> uh, this never gets used.
>
>>
>> NSString *customFilePath = [[NSString alloc] initWithString:
>> [dir stringByAppendingPathComponent:@"dict.plist"]];
> nonsense, [dir stringByAppendingPathComponent:@"dict.plist"] by itself is what you want.
>>
>>
>> uniqueInstance = [[NSMutableDictionary alloc] initWithContentsOfFile:customFilePath];
>> }
>>
>> return uniqueInstance;
>> }
>>
>>
>> I can't use this code because there is a EXC_BAD_ACCESS according to the debugger.
> What's the backtrace? Very hard for us to debug without. Your singleton method looks fine provided it's only ever accessed from a single thread at a time. From my comments above, sure you've posted all the relevant code?
>>
>> I tried moving the definition of the uniqueInstance outside the function and that didn't help. This code seems alright to me, but I can't find why it doesn't work. Can someone point out the problem?
>>
>> aa
>>
>> _______________________________________________
>>
>> 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
>
_______________________________________________
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