Sobes.tech
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.