nie ma specjalnej składni dla tego produktu. Po prostu definiujesz metodę klasy, aby zwrócić statyczną tablicę.
Na przykład:
@implementation A // note this is in the implementation
static NSArray *array;
+ (NSArray *)array
{
if (!array)
array = [[NSArray alloc] init];
return array;
}
@end
Albo kodu Messier, ale nieznacznie lepszą wydajność (dobrym pomysłem w pętli napięty, ale zazwyczaj nie warto):
@implementation A
static NSArray *array;
+ (void)initialize // this method is called *once* for every class, before it is used for the first time (not necessarily when the app is first launched)
{
[super initialize];
array = [[NSArray alloc] init];
}
+ (NSArray *)array
{
return array;
}
@end
do niego dostęp z klasą B
Po prostu wykonaj: [A array]
Jeśli potrzebujesz inicjacji bezpiecznej dla wątków i nadal chcesz to robić leniwie, to dispatch_once() jest dobrym rozwiązaniem. –
Hmm, nigdy o tym nie myślałem. Dobry pomysł. –
zobacz mój kod dla dispatch_once() – vikingosegundo