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