Junior — Middle
Ποια είναι η διαφορά μεταξύ του τύπου δεδομένων NSInteger και της κλάσης NSNumber στο Objective-C;
sobes.tech AI
Απάντηση από AI
NSInteger — είναι ένας primitive τύπος δεδομένων (typedef για int ή long ανάλογα με την αρχιτεκτονική), που χρησιμοποιείται για την αποθήκευση ακέραιων τιμών. Δεν είναι αντικείμενο και λειτουργεί σε επίπεδο στοίβας.
NSNumber — είναι μια κλάση-περιτύλιγμα (αντικείμενο) που επιτρέπει την αποθήκευση αριθμητικών τιμών (συμπεριλαμβανομένων NSInteger, float, double κ.ά.) ως αντικείμενα. Αυτό είναι χρήσιμο όταν χρειάζεται να αποθηκεύσετε έναν αριθμό σε συλλογές που λειτουργούν μόνο με αντικείμενα, όπως NSArray ή NSDictionary.
Παράδειγμα:
NSInteger myInt = 42; // απλός ακέραιος τύπος
NSNumber *myNumber = @(myInt); // αντικείμενο-περιτύλιγμα για τον αριθμό
// Χρήση του NSNumber σε πίνακα
NSArray *array = @[myNumber];
// Απόκτηση τιμής από το NSNumber
NSInteger value = [myNumber integerValue];
Έτσι, το NSInteger είναι ένας βασικός αριθμητικός τύπος, και το NSNumber είναι ένα αντικείμενο που ενσωματώνει έναν αριθμό για χρήση σε αντικειμενοστραφή πλαίσια.