2012-04-19 19 views
5

Mam listę obiektów (ciężarówek) o różnych atrybutach, które wypełniają widok tabeli. Kiedy je dotkniesz, przechodzą do indywidualnej strony ciężarówki. Jest przycisk dodawania, który doda je do listy ulubionych w innym widoku tabeli. Jak zainicjować pustą tablicę mutable w Cocoa?Jak zainicjować pustą zmienną tablicę w Objective C

Mam następujący kod:

-(IBAction)addTruckToFavorites:(id)sender:(FavoritesViewController *)controller 
{ 
    [controller.listOfTrucks addObject: ((Truck_Tracker_AppAppDelegate *)[UIApplication sharedApplication].delegate).selectedTruck]; 

} 
+0

Nie należy ustawiać tablicy regulacyjnej sterownika w taki sposób. Kontroler powinien udostępniać niezmienną tablicę innym obiektom; aby dodać nową ciężarówkę, dodaj metodę do kontrolera, który to robi. Następnie, zamiast uzyskać 'listOfTrucks' i bezpośrednio zmienić to bez wiedzy kontrolera, mówisz kontrolerowi, aby wprowadził zmianę. –

Odpowiedz

19

Aktualizacja:

Dzięki nowej składni można użyć:

NSMutableArray *myArray = [NSMutableArray new]; 

Oryginalny odpowiedź:

na przykład:

NSMutableArray *myArray = [[NSMutableArray alloc] init]; 

I here dowiedzieć się, dlaczego (różnica między klasy i metody instancji)

+0

Nawet jeśli tablica jest początkowo pusta, jeśli wiesz, że umieszczasz w niej pewną liczbę obiektów, 'initWithCapacity:' może sprawić, że ta populacja będzie szybsza (ponieważ tablica może początkowo utworzyć swój magazyn podkładowy z przestrzenią dla wielu obiekty). –

+0

Co więcej, autorelease nie jest złem, które niektórzy ludzie robią.Nie ma nic złego w '[NSMutableArray array]'; w tym przypadku nie jest to właściwe, zakładając, że kontroler przydzieli nową tablicę bezpośrednio do swojej prywatnej zmiennej instancji '_listOfTrucks'. –

0

listOfTrucks = [NSMutableArray array]; daje nową zmienny tablicę.

0
NSMutableArray *arr = [NSMutableArray new]; 
2

Zasadniczo istnieją trzy opcje:

Pierwszy

NSMutableArray *myMutableArray = [[NSMutableArray alloc] init]; 

drugie

NSMutableArray *myMutableArray = [NSMutableArray new]; 

trzecie

NSMutableArray *myMutableArray = [NSMutableArray array]; 
1

Można również zainicjować w ten sposób

Innym sposobem na Objective C oprócz odpowiedzi na @NSSam

NSMutableArray *myMutableArray = [@[] mutableCopy]; 

do szybkiego

let myArray = NSMutableArray() 

LUB

let myArray = [].mutableCopy() as! NSMutableArray; 
Powiązane problemy