Junior — Middle
შეგიძლიათ მიაწოდოთ მონაცემთა სტრუქტურის შენახვისთვის დინამიური მეხსიერების განაწილების მაგალითი?
sobes.tech AI
პასუხი AI-სგან
iOS-ში დინამიური მეხსიერების განაწილებისთვის ხშირად გამოიყენება კლასები, რომლებიც მეხსიერებას ავტომატურად მართავენ, მაგალითად NSMutableArray ან Swift Array. მაგრამ თუ უფრო დაბალ დონეზე ვსაუბრობთ, შეგვიძლია გამოვიყენოთ malloc და free ფუნქციები მონაცემთა სტრუქტურისთვის მეხსიერების განაწილებისათვის.
მაგალითი Swift-ში UnsafeMutablePointer-ის გამოყენებით დინამიური სტრუქტურის მასივისთვის:
struct Point {
var x: Int
var y: Int
}
let count = 5
let pointer = UnsafeMutablePointer<Point>.allocate(capacity: count)
for i in 0..<count {
pointer.advanced(by: i).initialize(to: Point(x: i, y: i * 2))
}
// მონაცემების გამოყენება
for i in 0..<count {
let point = pointer.advanced(by: i).pointee
print("Point \(i): (\(point.x), \(point.y))")
}
// მეხსიერების გათავისუფლება
pointer.deinitialize(count: count)
pointer.deallocate()
ეს მიდგომა საშუალებას აძლევს მეხსიერების ხელით მართვას, რაც სასარგებლოა დაბალ დონეზე API-ებთან მუშაობისას ან შესრულების ოპტიმიზაციისთვის.