Files
tubestation/toolkit/components/alerts/mac/growl/GrowlAbstractSingletonObject.h

72 lines
2.0 KiB
Objective-C

//
// GrowlAbstractSingletonObject.h
// GBUtilities
//
// Renamed from GBAbstractSingletonObject to GrowlAbstractSingletonObject.
// Created by Ofri Wolfus on 15/08/05.
// Copyright 2005-2006 The Growl Project. All rights reserved.
//
#import <Foundation/Foundation.h>
/*!
* @class GrowlAbstractSingletonObject
* @brief An Abstract Singleton Object
*
* This is an abstract object for object that should have only one instnace
* that is never released (singleton object).
* This class is thread safe.
*/
@interface GrowlAbstractSingletonObject : NSObject {
BOOL _isInitialized;
}
/*!
* @brief Returns the shared instance of this class.
*/
+ (id) sharedInstance;
/*!
* @brief Releases and deallocates all the singletons that are subclasses of this object.
*
* Once +destroyAllSingletons has been called, no more singletons can be created
* and every call to [SomeSingletonSubclass sharedInstance] will return nil.
* Also note that a call to this method will destroy GBAbstractSingletonObject and all it's subclasses.
* Even though that you generally can't release a singleton object, it's dealloc message WILL be called
* when it's beeing destroyed.
*
* USE THIS METHOD WITH GREAT CAUTION!!!
*/
+ (void) destroyAllSingletons;
@end
/*!
* @category GrowlSingletonObjectInit
* @brief A private category for subclasses only.
*
* Only subclasses should override/call methods in the category.
*/
@interface GrowlAbstractSingletonObject (GrowlAbstractSingletonObjectInit)
/*!
* @brief An init method for your singleton object.
*
* Implement this in your subclass to init your shared object.
* You should call [super initSingleton] and return your initialized object.
* Never call this method directly! It'll be automatically called when needed.
*/
- (id) initSingleton;
/*!
* @brief Finish and clean up whatever your singleton does.
*
* This will be called before the singleton will be destroyed.
* You should put whatever you would put in the -dealloc method here instead
* and then call [super destroy].
*/
- (void) destroy;
@end