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