On 14.04.2013, at 06:29, Steve Mills <sjmi...@mac.com> wrote:
> Oh, that's easy, once you know how to make singletons. OK, I wouldn't call it 
> easy, but it's the right thing to do.

 If the C++ Steve wrote helps you understand things better, here's a 1-to-1 
translation of that code to the equivalent in Objective C:

PreRun.h:

@interface PreRun : NSObject
{
        BOOL                    theVariableYouWantToBeGlobal;
}

-(PreRun*)      sharedInstance; // Usually a singleton access method is called 
defaultX or sharedX, not GetInstance like in C++.

-(void) setVar: (BOOL)b;
-(BOOL) var;                    // You usually don't use GetX as the name for a 
getter in Objective C. A 'get' prefix is used to indicate a method that has 
return parameters.

@end


PreRun.m:

@implementation PreRun

-(PreRun*)      instance
{
        static PreRun*  sSharedInstance = nil;
        if( sSharedInstance == nil )
                sSharedInstance = [[PreRun alloc] init];
        return sSharedInstance;
}


-(void) setVar: (BOOL)b
{
        theVariableYouWantToBeGlobal = b;
}

-(BOOL) var
{
        return theVariableYouWantToBeGlobal;
}

@end

> In a file that wants to use that variable:

        [[PreRun instance] setVar: YES];

As others mentioned, you could use dispatch_once for thread safety (but I don't 
think threading is a topic you want to tackle at this point, save that for 
later and save yourself a lot of pain and random bugs that sometimes happen and 
sometimes don't). Also, you would probably use @property BOOL (assign) var; and 
@synthesize var = theVariableYouWantToBeGlobal; to save yourself the work of 
writing setVar:/var methods and declaring the instance variable 
'theVariableYouWantToBeGlobal'.

Some people also believe in overriding -init, -retain, -release and 
-retainCount to keep people from creating a second instance of this object, but 
that's more defensive coding than necessary. I just mention it because it's the 
moral equivalent to Steve's making the constructor private.

Cheers,
-- Uli Kusterer
"The Witnesses of TeachText are everywhere..."
http://www.masters-of-the-void.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:
https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to