• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag
 

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: singleton design pattern
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

References: 
 >singleton design pattern (From: Alejandro Marcos Aragón <email@hidden>)
 >Re: singleton design pattern (From: Mike Abdullah <email@hidden>)

  • Prev by Date: Re: iPhone/iPad: Desktop wallpaper can't be set.
  • Next by Date: Re: singleton design pattern
  • Previous by thread: Re: singleton design pattern
  • Next by thread: Re: singleton design pattern
  • Index(es):
    • Date
    • Thread