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