Junior — Middle
Ar galėtumėte pateikti pavyzdį, kaip naudoti dinaminį atminties paskirstymą duomenų struktūrai saugoti?
sobes.tech AI
Atsakymas iš AI
iOS dažnai dinaminio atminties paskirstymo atveju naudojamos klasės, kurios automatiškai valdo atmintį, pavyzdžiui, NSMutableArray arba Swift Array. Tačiau jei kalbėsime apie žemesnį lygį, galima naudoti malloc ir free funkcijas, skirtas paskirstyti atmintį duomenų struktūrai.
Pavyzdys Swift kalba su UnsafeMutablePointer naudojimu dinamiškai struktūrų masyvui:
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))
}
// Duomenų naudojimas
for i in 0..<count {
let point = pointer.advanced(by: i).pointee
print("Point \(i): (\(point.x), \(point.y))")
}
// Atminties atlaisvinimas
pointer.deinitialize(count: count)
pointer.deallocate()
Šis požiūris leidžia rankiniu būdu valdyti atmintį, kas naudinga dirbant su žemyninio lygio API ar siekiant optimizuoti našumą.