Sobes.tech
Junior — Middle

Kun je een bestaande klasse of structuur uitbreiden door er een nieuwe eigenschap aan toe te voegen met behulp van extensies?

sobes.tech AI

Antwoord van AI

In Swift maken uitbreidingen (extensions) het mogelijk om nieuwe methoden, berekende eigenschappen, initializers, subscript en geneste typen toe te voegen aan bestaande klassen, structuren of enumeraties. Echter, uitbreidingen kunnen geen opgeslagen eigenschappen toevoegen. Dit komt doordat uitbreidingen de interne structuur van het type niet wijzigen, maar alleen functionaliteit toevoegen.

Als je een nieuwe eigenschap wilt toevoegen, kun je een berekende eigenschap gebruiken die een waarde berekent tijdens runtime, maar niet in het geheugen van het object wordt opgeslagen.

Voorbeeld van een berekende eigenschap in een uitbreiding:

extension String {
    var reversedString: String {
        return String(self.reversed())
    }
}

let text = "Hello"
print(text.reversedString) // Output: "olleH"

Als je een nieuwe waarde moet opslaan, kun je geassocieerde objecten gebruiken via de Objective-C runtime, maar dit is geen standaardmethode en geldt alleen voor klassen die van NSObject erven.