everytime you ask for a uniqueInstance it looks like it retrieves a new 
instance not the existing instance... since you set the uniqueinstance to nil 
inside that function, your function will discard the previous instance if any 
and then create a new instance. Singleton is supposed to return existing 
instance if any and if none create one. 

Also i guess the scope of your static is local.

correct me if i am wrong.

Thanks,
Abhinay.

On May 19, 2010, at 12:30 PM, Alejandro Marcos Aragón wrote:

> Hi Abhinay,
> 
> Why declaring the static variable outside the function? If I have it inside, 
> I make sure that it's initialized before it's being used.
> 
> aa
> 
> 
> On May 18, 2010, at 5:58 PM, Abhinay Kartik Reddyreddy wrote:
> 
>> 
>> On May 18, 2010, at 6: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
>>      static NSMutableDictionary* uniqueInstance = nil;
>> // the static variable has to be initialized before  you enter the 
>> uniqueInstance method.
>>>> 
>>>> 
>>>> + (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/karthikreddy09%40gmail.com
>>> 
>>> This email sent to karthikredd...@gmail.com
>> 
> 

_______________________________________________

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