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 ([email protected])
>>>
>>> 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 [email protected]
>>
>> _______________________________________________
>>
>> Cocoa-dev mailing list ([email protected])
>>
>> 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 [email protected]
>
_______________________________________________
Cocoa-dev mailing list ([email protected])
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 [email protected]