Quindi ho un singleton in Objective-C, c'è un metodo statico esposto per accedere all'unica istanza:
+ (id)sharedMyClass {
static MyClass* sharedMyClass = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedMyClass = [[self alloc] init];
sharedMyClass.myStringProperty = @"bla"; // here
});
return sharedMyClass;
}
e un metodo% non esposto diinit
, utilizzato solo quando l'istanza viene creata per la prima volta:
- (id)init {
if (self = [super init]) {
self.myStringProperty = @"bla"; // or here
return self;
}
return nil;
}
Posso inizializzare le proprietà dell'istanza nel primo metodo, impostandole direttamente su sharedMyClass
all'interno del blocco dispatch_once
. Oppure posso impostarli su self
nel metodo init
. So che funzionalmente non c'è alcuna differenza, ma c'è una convenzione per questo? Qual è la migliore pratica?