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 или за оптимизация на производителността.