Sobes.tech
Junior

Kaip Swift kalboje prieiti prie klasės ir struktūros objektų?

sobes.tech AI

Atsakymas iš AI

Objektų klasėms — nuoroda, struktūros objektams — reikšmė:

Klasės (nuorodos tipas):

Klasės pavyzdžiui, priskiriant kintamajam ar konstantei, priskiriama nuoroda į tą patį pavyzdį. Pakeitimai, atlikti per vieną nuorodą, bus matomi visuose nuorodose, rodančiose į tą pavyzdį:

class MyClass {
    var value: Int = 0
}

let object1 = MyClass() // Pavyzdžio sukūrimas
let object2 = object1   // object2 dabar rodo tą patį pavyzdį
object1.value = 10      // Pakeitimas per object1
print(object2.value)    // Išves 10 - pakeitimas matomas per object2

Struktūros (reikšmės tipas):

Priskiriant struktūros pavyzdį kintamajam ar konstantei, sukuriama šio pavyzdžio kopija. Kiekvienas kintamasis/konstanta turi savo nepriklausomą duomenų kopiją. Pakeitimai vienoje kopijoje neįtakoja kitų:

struct MyStruct {
    var value: Int = 0
}

var struct1 = MyStruct() // Pavyzdžio sukūrimas
var struct2 = struct1    // Sukuriama struct1 kopija
struct1.value = 20       // Pakeitimas per struct1
print(struct2.value)     // Išves 0 - struct2 liko nepakitusi

Palyginimas:

Savybė Klasės Struktūros
Tipas nuoroda reikšmė
Priskyrimas nuorodos kopija reikšmės kopija
Pakeitimai matomi visuose nuorodose veikia tik kopijoje
Paveldėjimas palaikomas nepalaikomas
Identifikacija galima patikrinti (===) nėra identifikacijos koncepcijos

Klasės ir struktūros pasirinkimas priklauso nuo reikalavimų. Struktūros dažnai naudojamos mažiems, paprastiems duomenų tipams, kurie atstovauja reikšmę (pvz., Point, Size, Range). Klasės naudojamos sudėtingesniems duomenų tipams, kuriems reikalinga nuorodų semantika, paveldėjimas ar objekto gyvavimo ciklo valdymas (pvz., UIViewController, UIView).