Sobes.tech
Middle

Mit tud a Swift-ben lévő capture listáról?

sobes.tech MI

Válasz az MI-től

Swiftben a capture list-et a zárójelekben használják a környezeti kontextusból származó változók elfogásának kezelésére, különösen az erős hivatkozási ciklusok (retain cycles) elkerülése érdekében.

A capture list a zárójelben írható a zárójeltest előtt, és lehetővé teszi, hogy meghatározza, hogyan lesznek elfogva a változók — erős (strong), gyenge (weak) vagy tulajdonos nélküli (unowned).

Példa:

class ViewController {
    var name = "Swift"
    lazy var closure: () -> Void = { [weak self] in
        guard let self = self else { return }
        print(self.name)
    }
}

Itt a [weak self] megakadályozza, hogy erős hivatkozás maradjon self-re a zárójelben, ami segít elkerülni a memória szivárgásokat.

Így a capture list egy eszköz az objektumok életciklusának ellenőrzésére, amelyeket a zárójel elfogott.