Mam klasy A, która jest super klasy zarówno dla klasy B i klasy C. Potrzebuję przechowywać obiekty klasy A w "statycznej" NSMutablearray zdefiniowanej w klasie A. Czy jest możliwa modyfikacja danych przechowywanych w MSMutableArray przy użyciu metod w klasie B i klasa C? Jak utworzyć i zainicjować macierz statyczną? Przykładem może być większa pomoc. z góry dziękuję.Jak utworzyć Static NSMutableArray w klasie w Objective c?
7
A
Odpowiedz
14
Oto jeden sposób, aby to zrobić.
@interface ClassA : NSObject
{
}
-(NSMutableArray*) myStaticArray;
@end
@implementation ClassA
-(NSMutableArray*) myStaticArray
{
static NSMutableArray* theArray = nil;
if (theArray == nil)
{
theArray = [[NSMutableArray alloc] init];
}
return theArray;
}
@end
To jest wzór, którego używam dużo zamiast prawdziwych singletonów. Obiekty klasy A i jej podklasy mogą jej używać w następujący sposób:
[[self myStaticArray] addObject: foo];
Istnieją odmiany, które można rozważyć np. możesz uczynić metodę metodą klasową. Możesz również chcieć, aby metoda była bezpieczna w środowisku wielowątkowym. na przykład
-(NSMutableArray*) myStaticArray
{
static NSMutableArray* theArray = nil;
@synchronized([ClassA class])
{
if (theArray == nil)
{
theArray = [[NSMutableArray alloc] init];
}
}
return theArray;
}
Powiązane problemy
- 1. Jak dodać NSMutableArray do obiektu NSMutableArray Objective-c
- 2. Jak utworzyć NSMutableArray wartości zmiennoprzecinkowych
- 3. Równoważnik NSMutableArray w C++?
- 4. jak utworzyć tablicę ciąg lub float w Objective-C
- 5. Static inicjalizacji pola w klasie szablonu w C++
- 6. Jak utworzyć funkcję szablonu w klasie? (C++)
- 7. ?: w Objective C
- 8. Dlaczego powinniśmy używać tylko "static" w klasie lub funkcji (C++)?
- 9. Static polimorfizm w C++
- 10. Objective-C: dostęp do własności prywatnej w odziedziczonej klasie
- 11. cel-c: Jak zaktualizować obiekt w NSMutableArray?
- 12. Jak utworzyć dokładne zdarzenie licznika czasu w Objective-C/iOS?
- 13. Jak utworzyć cinemagraphs w Objective-C używając AVFoundation
- 14. Jak utworzyć pusty przezroczysty png w Objective-C?
- 15. Deklaracja pod interfejsem w Objective C
- 16. Grupowanie obiektów niestandardowych w Objective-C
- 17. Używanie (id) w Objective-C
- 18. Sumaryczna tablica - Objective-C
- 19. Jak dynamicznie ładować klasę w Objective-C?
- 20. Połącz jedną NSMutableArray z końcem innej NSMutableArray
- 21. Uporządkuj Kolory (Objective-C)
- 22. Wordnet w Objective-C
- 23. Objective-C - Jak porównać tablice i wyodrębnić różnicę?
- 24. Deklaracja statycznych zmiennych składowych, takich jak Java w Objective-C
- 25. Threading w Objective-C
- 26. BDD w Objective-C
- 27. Google'a w Objective-C
- 28. Czy można utworzyć własność prywatną w Objective-C?
- 29. Przechowywanie CLLocationCoordinates2D w NSMutableArray
- 30. W Objective C, dlaczego wolno mi przypisać NSArray do NSMutableArray bez błędu lub ostrzeżenia?
Czy to nie spowoduje wycieku pamięci dla lampy? – tbag
To nie będzie przeciekać - tablica jest zdefiniowana jako tablica statyczna, więc obiekt ten zostanie utworzony tylko raz. – deathhorse
@JeremyP tylko znajdując to teraz. Chciałem tylko powiedzieć okrzyki za to. Świetne rozwiązanie! –