Sobes.tech
Junior

Rääkige Objective-C või Swifti klasside päriluse ahelast.

sobes.tech AI

Vastus AI-lt

Objective-C iga klass pärineb NSObject-st (või selle alamklassist), mis on suurema osa objektorienteeritud ja mitte-tekstiliste klasside juurklass Foundation raamistikus. NSObject pakub põhilist funktsionaalsust, nagu mälu haldus, objektide kirjeldus, võrdluse testimine ja introspektsioon.

// Objective-C klassi deklaratsioon eeldab automaatselt pärandumist `NSObject`-st, kui teist ei ole selgelt märgitud.
@interface MyClass : NSObject // Selge pärandumine NSObject-st.
// ...
@end

// Kui pärandumist ei ole selgelt märgitud, pärib vaikimisi NSObject-st.
@interface AnotherClass
// ...
@end

Swift klassidel ei ole ühtset juurklass nagu NSObject Objective-C-s. Klass võib pärida teisest klassist, moodustades hierarhia. Kui klass ei pärine otseselt teisest klassist, on ta omaenda hierarhia juurklass. Ühilduvus Objective-C ja Cocoa raamistikuga tagatakse klassidega, mis on bridge'itud Swift ja Objective-C vahel, näiteks Foundation klassidega.

// Klass ilma selge pärandumiseta - on oma hierarhia juur.
class MySwiftClass {
    // ...
}

// Klass, mis pärib teisest Swift klassist.
class AnotherSwiftClass: MySwiftClass {
    // ...
}

// Swift klass, mis pärib Objective-C klassist (näiteks Foundation-ist).
import Foundation

class MyViewController: UIViewController { // UIViewController pärib UIResponderist, mis pärib NSObjectist
    // ...
}

Pärandumisahel on klasside järjestus lapseklassist vanemklassini, kuni juurklassini (olgu see NSObject Objective-C-s või juurklass Swift hierarhias). See võimaldab lapseklassidel kasutada ja üle kirjutada vanemate klasside omadusi ja meetodeid.