J'essaie d'implémenter une classe qui sous-classe NSObject
directement, qui ne peut avoir qu'une seule instance disponible pendant toute la durée d'exécution de l'application qui l'utilise.Objective-C Façon correcte de créer une classe avec une seule instance
Actuellement, j'ai cette approche:
// MyClass.h
@interface MyClass : NSObject
+(MyClass *) instance;
@end
Et la mise en œuvre:
// MyClass.m
// static instance of MyClass
static MyClass *s_instance;
@implementation MyClass
-(id) init
{
[self dealloc];
[NSException raise:@"No instances allowed of type MyClass" format:@"Cannot create instance of MyClass. Use the static instance method instead."];
return nil;
}
-(id) initInstance
{
return [super init];
}
+(MyClass *) instance {
if (s_instance == nil)
{
s_instance = [[DefaultLiteralComparator alloc] initInstance];
}
return s_instance;
}
@end
Est-ce la bonne façon d'accomplir une telle tâche?
Merci
Merci, je vais utiliser cette solution! –
Voir aussi http://stackoverflow.com/questions/145154/what-does-your-objective-c-singleton-look-like – sdolan
Joli lien, m'a beaucoup aidé! –