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 (Cocoa-dev@lists.apple.com)
>> 
>> 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:
>> http://lists.apple.com/mailman/options/cocoa-dev/cocoadev%40mikeabdullah.net
>> 
>> This email sent to cocoa...@mikeabdullah.net
> 

_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

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:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to