Junior — Middle
Czym różni się typ danych NSInteger od klasy NSNumber w Objective-C?
sobes.tech AI
Odpowiedź od AI
NSInteger — to podstawowy typ danych (typedef dla int lub long w zależności od architektury), używany do przechowywania wartości całkowitych. Nie jest obiektem i działa na poziomie stosu.
NSNumber — to klasa opakowująca (obiekt), która pozwala przechowywać wartości liczbowe (w tym NSInteger, float, double i inne) w formie obiektów. Jest to przydatne, gdy trzeba przechować liczbę w kolekcjach, które obsługują tylko obiekty, takich jak NSArray czy NSDictionary.
Przykład:
NSInteger myInt = 42; // prosty typ liczbowy
NSNumber *myNumber = @(myInt); // obiekt-opakowanie dla liczby
// Użycie NSNumber w tablicy
NSArray *array = @[myNumber];
// Pobranie wartości z NSNumber
NSInteger value = [myNumber integerValue];
Tak więc, NSInteger to podstawowy typ liczbowy, a NSNumber to obiekt, który enkapsuluje liczbę do użycia w kontekście obiektowym.