Junior — Middle
Objective-C-ში რა განსხვავებაა მონაცემთა ტიპის NSInteger და კლასის NSNumber შორის?
sobes.tech AI
პასუხი AI-სგან
NSInteger — ეს არის პრიმიტიული მონაცემთა ტიპი (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 — ობიექტი, რომელიც ინკაფსულირებს რიცხვს ობიექტზე ორიენტირებულ კონტექსტში გამოყენებისთვის.