Sobes.tech
Junior

Vertel over de erfvolgorde van klassen in Objective-C of Swift.

sobes.tech AI

Antwoord van AI

In Objective-C erft elke klasse van NSObject (of een subclass ervan), dat de basisklasse is van de meeste objectgeoriënteerde en niet-string klassen in het Foundation-framework. NSObject biedt basisfunctionaliteit zoals geheugenbeheer, objectbeschrijving, gelijkheidstests en introspectie.

// In Objective-C impliceert de klasseverklaring automatisch erfelijkheid van `NSObject`, tenzij anders aangegeven.
@interface MyClass : NSObject // Expliciete erfelijkheid van `NSObject`.
// ...
@end

// Als er geen expliciete erfelijkheid is, erft de klasse standaard van `NSObject`.
@interface AnotherClass
// ...
@end

In Swift hebben klassen geen enkele root-klasse zoals NSObject in Objective-C. Een klasse kan van een andere klasse erven, waardoor een hiërarchie ontstaat. Als een klasse niet expliciet van een andere klasse erft, is deze de root-klasse in zijn eigen hiërarchie. Compatibiliteit met Objective-C en Cocoa-frameworks wordt verzekerd door classes die bridged zijn tussen Swift en Objective-C, zoals classes uit Foundation.

// Klasse zonder expliciete erfelijkheid - root in zijn hiërarchie.
class MySwiftClass {
    // ...
}

// Klasse die van een andere Swift-klasse erft.
class AnotherSwiftClass: MySwiftClass {
    // ...
}

// Swift-klasse die van een Objective-C-klasse erft (bijvoorbeeld uit Foundation).
import Foundation

class MyViewController: UIViewController { // UIViewController erft van UIResponder, dat erft van NSObject
    // ...
}

De erfketen vertegenwoordigt een reeks klassen van kind tot ouder, tot de root-klasse (of NSObject in Objective-C of de root-klasse in de Swift-hiërarchie). Dit stelt kindklassen in staat om eigenschappen en methoden van ouderklassen te gebruiken en te overschrijven.