/ / NSMutableArray jest pusta po addObject - objective-c, ios, nsmutablearray

NSMutableArray jest pusty po addObject - target-c, ios, nsmutablearray

Chcę dodać obiekt do NSMutableArray:

NSLog(@"Object text: %@", object.text);
NSLog(@"Object: %@", object);
[appdelegate.objects addObject:object];
NSLog(@"Objects array size: %i", [appdelegate.objects count]);

To jest wynik:

Object text: This is the text
Object: <Object: 0x6e762c0>
Objects array size: 0

Jak to możliwe, dodaję obiekt, w następnym wierszu nadal jest pusty. Plik NSMutableArray nie jest nil, ponieważ spowodowałoby to wyjątek.

Czy ktoś zgaduje?

Odpowiedzi:

10 dla odpowiedzi № 1

Nie stanowiłoby to wyjątku, gdyby tak było nil. Nadal możesz wysłać wiadomość nil obiektu, jeśli zwykle odpowiada na tę wiadomość. W tym przypadku otrzymasz po prostu 0. Myślę, że nie przydzielasz tablicy. Upewnij się, że robisz to:

array = [[NSMutableArray alloc] init];

Wskazówka dotycząca debugowania, jeśli nie masz pewności co do stanu obiektu i chcesz się upewnić, że obiekt rzeczywiście istnieje i jest gotowy do użycia, użyj assert(appdelegate.objects); Jeśli tablica jest zerowa, twój kod przestanie działać w tym wierszu. Jeśli nie kończy się na tym wierszu, to wiesz, że obiekt istnieje w pamięci.


0 dla odpowiedzi nr 2

Twój NSMutableArray jest rzeczywiście prawie na pewno zerowy. Nie zgłosi wyjątku, ponieważ wysyła wiadomość do nil w ObjC nie jest operacją i zachowywałby się tak, jak widzisz, ze zwracaną wartością równą zero lub nilitp.

Spróbuj również to zarejestrować, aby sprawdzić dwukrotnie.